- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用this使用 OpenAI + Pinecone 为 YouTube 视频创建语义搜索的存储库,但我在此步骤中遇到 429 错误 - “运行命令 npx tsx src/bin/process-yt-playlist.ts 来预处理转录本并从中获取嵌入OpenAI,然后将它们插入到 Pinecone 搜索索引中。”
感谢任何帮助!!
附件是我的 openai.ts 文件
import pMap from 'p-map'
import unescape from 'unescape'
import * as config from '@/lib/config'
import * as types from './types'
import pMemoize from 'p-memoize'
import pRetry from 'p-retry'
import pThrottle from 'p-throttle'
// TODO: enforce max OPENAI_EMBEDDING_CTX_LENGTH of 8191
// https://platform.openai.com/docs/guides/rate-limits/what-are-the-rate-limits-for-our-api
// TODO: enforce TPM
const throttleRPM = pThrottle({
// 3k per minute instead of 3.5k per minute to add padding
limit: 3000,
interval: 60 * 1000,
strict: true
})
type PineconeCaptionVectorPending = {
id: string
input: string
metadata: types.PineconeCaptionMetadata
}
export async function getEmbeddingsForVideoTranscript({
transcript,
title,
openai,
model = config.openaiEmbeddingModel,
maxInputTokens = 100, // TODO???
concurrency = 1
}: {
transcript: types.Transcript
title: string
openai: types.OpenAIApi
model?: string
maxInputTokens?: number
concurrency?: number
}) {
const { videoId } = transcript
let pendingVectors: PineconeCaptionVectorPending[] = []
let currentStart = ''
let currentNumTokensEstimate = 0
let currentInput = ''
let currentPartIndex = 0
let currentVectorIndex = 0
let isDone = false
// const createEmbedding = pMemoize(throttleRPM(createEmbeddingImpl))
// Pre-compute the embedding inputs, making sure none of them are too long
do {
isDone = currentPartIndex >= transcript.parts.length
const part = transcript.parts[currentPartIndex]
const text = unescape(part?.text)
.replaceAll('[Music]', '')
.replaceAll(/[\t\n]/g, ' ')
.replaceAll(' ', ' ')
.trim()
const numTokens = getNumTokensEstimate(text)
if (!isDone && currentNumTokensEstimate + numTokens < maxInputTokens) {
if (!currentStart) {
currentStart = part.start
}
currentNumTokensEstimate += numTokens
currentInput = `${currentInput} ${text}`
++currentPartIndex
} else {
currentInput = currentInput.trim()
if (isDone && !currentInput) {
break
}
const currentVector: PineconeCaptionVectorPending = {
id: `${videoId}:${currentVectorIndex++}`,
input: currentInput,
metadata: {
title,
videoId,
text: currentInput,
start: currentStart
}
}
pendingVectors.push(currentVector)
// reset current batch
currentNumTokensEstimate = 0
currentStart = ''
currentInput = ''
}
} while (!isDone)
let index = 0;
console.log("Entering embeddings calculation")
// Evaluate all embeddings with a max concurrency
// const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
const vectors: types.PineconeCaptionVector[] = await pMap(
pendingVectors,
async (pendingVector) => {
// await delay(6000); // add a delay of 1 second before each iteration
console.log(pendingVector.input + " " + model)
// const { data: embed } = await openai.createEmbedding({
// input: pendingVector.input,
// model
// })
async function createEmbeddingImpl({
input = pendingVector.input,
model = 'text-embedding-ada-002'
}: {
input: string
model?: string
}): Promise<number[]> {
const res = await pRetry(
() =>
openai.createEmbedding({
input,
model
}),
{
retries: 4,
minTimeout: 1000,
factor: 2.5
}
)
return res.data.data[0].embedding
}
const embedding = await pMemoize(throttleRPM(createEmbeddingImpl));
const vector: types.PineconeCaptionVector = {
id: pendingVector.id,
metadata: pendingVector.metadata,
values: await embedding(pendingVector)
}
console.log(index + " THIS IS THE NUMBER OF CALLS TO OPENAI Embedding: " + embedding)
index++;
return vector
},
{
concurrency
}
)
return vectors
}
function getNumTokensEstimate(input: string): number {
const numTokens = (input || '')
.split(/\s/)
.map((token) => token.trim())
.filter(Boolean).length
return numTokens
}
我尝试将 api 调用之间的时间间隔增加到远低于限制,但不知何故我仍然遇到相同的错误。
最佳答案
如果您没有任何积分,OpenAI 会发送 429 Rate Limit
错误。我一直在使用 3 个月后过期的免费积分。您可以在使用页面上查看您的可用积分:
https://platform.openai.com/account/usage
旁注:一旦我将信用卡存档,大约需要 5 分钟时间限制才会消失
关于typescript - OpenAI 速率限制 429 Bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75763453/
我收到以下错误:模块“openai”没有属性“ChatCompletion” 我检查了其他帖子。都在说升级OpenAI Python包或者升级Python。我都做了,但没有修复它。 Python:3.
我收到以下错误:模块“openai”没有属性“ChatCompletion” 我检查了其他帖子。都在说升级OpenAI Python包或者升级Python。我都做了,但没有修复它。 Python:3.
我有一个用例,非常需要来自 OpenAI API 的完全确定性响应。然而,玩弄温度似乎无法产生完全的决定论。 import openai openai.organization = "org-..."
OpenAI api 包含一个微调服务,将任务分为“提示”和“完成” https://platform.openai.com/docs/guides/fine-tuning 文档说准确度指标是根据完成
我通过openai的text-davinci-003可以正常返回对话信息,但是目前无法实现上下文关联功能。我搜索了一下,发现有一个“conversation_id”参数,但是添加该参数后,API返回“
我有一个用例,非常需要来自 OpenAI API 的完全确定性响应。然而,玩弄温度似乎无法产生完全的决定论。 import openai openai.organization = "org-..."
OpenAI api 包含一个微调服务,将任务分为“提示”和“完成” https://platform.openai.com/docs/guides/fine-tuning 文档说准确度指标是根据完成
我通过openai的text-davinci-003可以正常返回对话信息,但是目前无法实现上下文关联功能。我搜索了一下,发现有一个“conversation_id”参数,但是添加该参数后,API返回“
我想使用 openai.embeddings_utils import get_embeddings所以已经安装了openai Name: openai Version: 0.26.5 Summary
当我使用 GPT3 的 playground 时,我经常得到带有编号列表和段落格式的结果,如下所示: Here's what the above class is doing: 1. It creat
当我使用 GPT3 的 playground 时,我经常得到带有编号列表和段落格式的结果,如下所示: Here's what the above class is doing: 1. It creat
我想使用 openai.embeddings_utils import get_embeddings所以已经安装了openai Name: openai Version: 0.26.5 Summary
OpenAI/chat GPT也支持docx/pdf文件上传吗?。我想上传多个文件到openAI/chatGPT。我在https://platform.openai.com/docs/api-refe
openAI/chatGPT也支持docx/pdf文件上传吗? 我想上传多个文件到 openAI/chatGPT。我尝试了 https://platform.openai.com/docs/api-r
openAI/chatGPT也支持docx/pdf文件上传吗? 我想上传多个文件到 openAI/chatGPT。我尝试了 https://platform.openai.com/docs/api-r
如果我们查看环境的预览,它们会在右下角的动画中显示剧集的增加。 https://gym.openai.com/envs/CartPole-v1/ .是否有明确显示的命令? 最佳答案 我认为 Ope
是否有人从使用 text-embedding-ada-002 的 Azure OpenAI 嵌入部署中获得的结果与 OpenAI 的结果不同?相同的文本,相同的模型,结果在向量空间中相差相当远。 对于
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在学习gpt微调 我成功运行了这个命令:pip install --upgrade openai 我无法运行此命令:export OPENAI_API_KEY="sk-xxxxxxxxxxxxxx
如何解决Openai API 不断输出的问题,比如让gpt api 写一篇文章。如果内容中断,可以继续提问,从而继续输出以上内容。这在ChatGPT中很容易做到,但是Openai API加上上面的提示
我是一名优秀的程序员,十分优秀!