跟 ChatGPT 就某篇长文进行讨论是否每次问答都会消耗大于那篇长文的 token 数?

跟 ChatGPT 就某篇长文进行讨论是否每次问答都会消耗大于那篇长文的 token 数?

原标题:跟 ChatGPT 就某篇长文进行讨论是否每次问答都会消耗大于那篇长文的 token 数?

关键字:OpenAI,ChatGPT

最佳回答:Tean

回答字数:2566字

你这个收费是指调用OpenAI的GPT API吗?

OpenAI官方的ChatGPT其实也是基于GPT API的,它每次调用都是独立的并没有所谓的上下文,ChatGPT官网或者一些第三方中转页面所实现的上下文,其实是把之前发过的内容重新再发一遍。

比如第一次你发的内容是1 你好(OpenAI的API定义这个内容叫USER Content)。除了USER Content,你还要定义对话的身份,比如“你是我的个人助理”(GPT的API定义这个内容叫SYSTEM Content)SYSTEM Content可以省去,但是没有交代背景身份,对话效果可能会有偏差,这时你提交的代码python大概是如下:

response = openai.ChatCompletion.create(
    model=gpt-3.5-turbo,
    messages=[
        {role: system, content: 你是我的个人助理},
        {role: user, content: 1 你好},
    ]
)

假设OpenAI API回答是“2 你也好”(OpenAI的API定义是回答内容叫ASSISTANT),回答的内容格式大致是这样:

{
  id: chatcmpl-123,
  object: chat.completion,
  created: 1677652288,
  model: gpt-3.5-turbo,
  choices: [{
    index: 0,
    message: {
      role: assistant,
      content: 2 你也好,
    },
    finish_reason: stop
  }],
  usage: {
    prompt_tokens: 9,
    completion_tokens: 12,
    total_tokens: 21
  }
}

那第一次收费是:

你是我的个人助理 +“1你好”的Token数 )* 提问token单价
+

2你也好) * 回答token单价

—————

如果你要实现上下文,下一次你发送的内容如果是“3 天气很不错”,那你需要发你是我的个人助理+“1 你好”+“2 你也好”+“3 天气很不错”:

response = openai.ChatCompletion.create(
     model=gpt-3.5-turbo,
     messages=[
         {role:system,content:你是我的个人助理},
         {role:user,content:1 你好},])
         {role:assistant,content:2 你也好},])
         {role:user,content:3 天气很不错},])

OpenAI API回答是“4 我们可以一起出去玩”:

{
  id: chatcmpl-123,
  object: chat.completion,
  created: 1677652288,
  model: gpt-3.5-turbo,
  choices: [{
    index: 0,
    message: {
      role: assistant,
      content: 4 我们可以一起出去玩,
    },
    finish_reason: stop
  }],
  usage: {
    prompt_tokens: 9,
    completion_tokens: 12,
    total_tokens: 21
  }
}

那第二次对话的收费是:

(你是我的个人助理 +“1 你好”+“2 你也好”+“3 天气很不错”的token数量) * 提问单价
+

4 我们可以一起出去玩 的token数量)* 回答单价

———–

另外,在OpenAI API的回复的json内容中其实也有对于本次对话的计费提示。

本文链接:

联系作者

回答作者:Tean

0

评论0

  1. 对于ChatGPT,每次问答都会消耗token数。在OpenAI API中,每个API调用的收费是基于输入和输出的token数目的。输入的token数包括了您的问题、指令以及之前的对话历史消息,而输出的token数则是ChatGPT生成的回复内容。

    对于您提到的九千字文章的修改建议,第一次问答将消耗较多的token数,因为这需要包含整篇文章的内容。然后,如果您再就这篇文章进行其他问题或指令,只涉及较短的输入和输出,那么这些问答将消耗较少的token数,不会再加上之前九千字文章的token数。

    关于收费方式,您所描述的情况是按照问答的单价乘以总的token数目来计算的。即使在后续的问答中,之前的九千字文章的token数不会被重复计算。

    至于附带历史消息数和历史消息长度压缩阈值这两个参数,它们与您的问题和收费方式没有直接关联。这些参数可以用来控制在对话过程中保留的历史消息数量和长度,以控制模型输入的大小和生成的回复内容。这可以帮助您在控制token数和控制费用方面进行优化。

    希望这些解答对您有所帮助!

    hjl4am 2023-10-09 0 回复
没有账号?注册  忘记密码?