有的小伙伴问我,是不是标题长了无法发送文章啊,一直报错,后来我也分析和复现了问题,发现是因为token数大于了官方额定最大的token值,于是乎一直400 429循环报错,具体如何解决,我们一点点分析:
image.png

  1. {
  2. 'id': 'chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve',
  3. 'object': 'chat.completion',
  4. 'created': 1677649420,
  5. 'model': 'gpt-3.5-turbo',
  6. 'usage': {'prompt_tokens': 56, 'completion_tokens': 31, 'total_tokens': 87},
  7. 'choices': [
  8. {
  9. 'message': {
  10. 'role': 'assistant',
  11. 'content': 'The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.'},
  12. 'finish_reason': 'stop',
  13. 'index': 0
  14. }
  15. ]
  16. }

上述是OPENAI在处理我们文章标题请求时返回的信息内容,为了方便大家阅读理解,我给大家整理一下: :::warning

  • id: 标识该聊天完成的唯一ID。
  • object: 该对象的类型,此处为”chat.completion”。
  • created: 完成对象创建的时间戳,使用的是Unix时间格式。
  • model: 使用的语言模型的名称或标识符。
  • usage: 包含使用模型完成该聊天的相关信息的字典。其中包括:
    • prompt_tokens: 提示文本的令牌数(输入模型的令牌数)。
    • completion_tokens: 完成文本的令牌数(模型生成的输出令牌数)。
    • total_tokens: 整个聊天过程中使用的总令牌数。
  • choices: 包含模型生成的所有可能的完成结果的列表。每个完成结果都包含以下信息:
    • message: 一个包含生成的聊天消息的字典,其中包括:
      • role: 消息的角色,可能是“assistant”(机器人)或“user”(用户)。
      • content: 生成的聊天消息的文本内容。
    • finish_reason: 模型完成原因的字符串描述,可能是”stop”(模型完成了预期的生成任务)或其他值(模型由于某些原因未能完成任务)。
    • index: 该选项在模型生成的所有选项中的位置索引。 :::

我们关心的其实就只有几个参数,他会影响我们AiPie的输出一直400或者429,接下来我们来看看一个参数表:
![{VCX(SKV28M6T0}Q5}WLW2.png

看到这张图之后,我们只需要知道可选模型中text-davinci-003和ext-davinci-002 token 最大都只支持4097的长度

这个长度又是怎么组成的呢? 就是参数中的东西了 :::warning

  • usage: 包含使用模型完成该聊天的相关信息的字典。其中包括:
    • prompt_tokens: 提示文本的令牌数(输入模型的令牌数)。
    • completion_tokens: 完成文本的令牌数(模型生成的输出令牌数)。
    • total_tokens: 整个聊天过程中使用的总令牌数。 ::: 这里的令牌就是token,也就是说 总数 = 提示词 +返回文本 必须小于4097 才能够完成整个文章的获取,不然就会疯狂400 429报错

image.png
这样解决:
因此解决方案也很简单: :::warning

OPENAI 相关设置
[openai]
# 设置API请求最高等待时间,默认为1s,单位秒
api_time = 1
# 设置网络请求最高等待时间,默认为10s,单位秒
timeout = 30
# 一次向openai发送的token尺寸,建议设置在1024-3500,不可超过范围
max_tokens = 3500 就是这里的数值会影响了 之前默认是4000 我们调整到2000-3500就不影响了
# openai文字模型设置,支持可选 text-davinci-003 text-davinci-002
model_engine = text-davinci-003
# 控制多样性,越接近1 多样性越大 建议0.3-0.8
temperature = 0.5
# 返回信息Debug 1是开启 0是关闭
debug_info = 1
# 返回格式
output_format = html

:::

这样支持的文章标题会更长,返回的信息相对会变短,但是可以有更长的提示词需求,让他写更精准的软文