- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个与 ChatGPT 对话并将其输出为流的函数,但我发现 ChatGPT 似乎没有提供我使用流输出时使用的 token
.
这是流式输出的功能:
/**
* talk with ChatGPT
* @param msg
* @param callback
* @example chatWithGPTWithSteaming([{role: "system", "content": "You are a helpful assistant."},{role: "system", content: "Hello world"}],(text)=>{console.log(text)})
*/
export async function chatWithGPTWithSteaming(msg: any,callback:Function) {
const chatCompletion = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
messages: msg,
stream: true,
}, {responseType: "stream"});
chatCompletion.data.on('data', data => {
const lines = data.toString().split('\n').filter(line => line.trim() !== '');
for (const line of lines) {
const message = line.replace(/^data: /, '');
if (message === '[DONE]') {
console.log("text is end");
console.log(chatCompletion);
// callback(false);
return; // Stream finished
}
try {
const parsed = JSON.parse(message);
const text = parsed.choices[0].delta.content;
data += text;
if (text) {
console.log(text);
callback(text);
}
} catch (error) {
console.error('Could not JSON parse stream message', message, error);
}
}
});
console.log(chatCompletion);
}
但是当我不使用流输出时:
export async function chatWithGPT(msg: any,a) {
const completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{role: "system", "content": "You are a helpful assistant."},
{role: "user", content: "Hello!"},
],
});
console.log(completion.data.choices[0].message);
}
此时,我可以从中获取usage.total
token
那么在使用流输出时我应该如何获取token
?
我注意到 Tokenizer OpenAI提供的可以使用,但是我使用Tokenizer计算出的token
值与ChatGPT API返回的值不同。
当我使用此对话时,API 返回 prompt_token
为 19
{role: "system", "content": "You are a helpful assistant."},
{role: "user", content: "Hello!"},
任何帮助将不胜感激。
最佳答案
我从 this code of Python 得到了答案.
这是Javascript的代码,它需要的依赖是GPT-3-Encoder .
const { encode } = require('gpt-3-encoder');
function numTokensFromMessages(messages, model = "gpt-3.5-turbo-0613") {
let tokens_per_message = 0;
let tokens_per_name = 0;
if (["gpt-3.5-turbo-0613", "gpt-3.5-turbo-16k-0613", "gpt-4-0314", "gpt-4-32k-0314", "gpt-4-0613", "gpt-4-32k-0613"].includes(model)) {
tokens_per_message = 3;
tokens_per_name = 1;
} else if (model == "gpt-3.5-turbo-0301") {
tokens_per_message = 4;
tokens_per_name = -1;
} else if (model.includes("gpt-3.5-turbo")) {
console.log("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.");
return numTokensFromMessages(messages, "gpt-3.5-turbo-0613");
} else if (model.includes("gpt-4")) {
console.log("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.");
return numTokensFromMessages(messages, "gpt-4-0613");
} else {
throw new Error(`num_tokens_from_messages() is not implemented for model ${model}. See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens.`);
}
let num_tokens = 0;
for (let i = 0; i < messages.length; i++) {
let message = messages[i];
num_tokens += tokens_per_message;
for (let key in message) {
let value = message[key];
num_tokens += encode(value).length;
if (key == "name") {
num_tokens += tokens_per_name;
}
}
}
num_tokens += 3;
return num_tokens;
}
// usage:
const testToken = numTokensFromMessages([
{ role: "system", "content": "You are a helpful assistant." },
{ role: "user", content: "Hello!" },
{ role: "assistant", content: "What can I help you with today?" },
{ role: "user", content: "I'd like to book a hotel in Berlin." },
]);
console.log(testToken);
关于openai-api - 如何计算整个ChatGPT对话的token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76887648/
我收到以下错误:模块“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加上上面的提示
我是一名优秀的程序员,十分优秀!