调用文心一言api报错the length of messages must be an odd number解决方 ...

打印 上一主题 下一主题

主题 929|帖子 929|积分 2787

报错的产生

当我调用gpt-4的时候,我的message如下:
   "messages": [
              {
                  "role": "system",
                  "content": "你是一个数学家",
              },
              {
                  "role": "user",
                  "content": "1+1等于几"
              }
          ]
  可以或许生成我想要的答案,但是gpt-4的api太贵了,于是我灵机一动,换成了免费的ERNIE-Speed-8K,代码酿成如下:
  1. import requests
  2. import json
  3. API_KEY = ""
  4. SECRET_KEY = ""
  5. def main():
  6.     url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed?access_token=" + get_access_token()
  7.     payload = json.dumps({
  8.         "messages": [
  9.             {
  10.                 "role": "system",
  11.                 "content": "你是一个数学家",
  12.             },
  13.             {
  14.                 "role": "user",
  15.                 "content": "1+1等于几"
  16.             }
  17.         ],
  18.         "temperature": 1,
  19.         "top_p": 1
  20.     })
  21.     headers = {
  22.         'Content-Type': 'application/json'
  23.     }
  24.    
  25.     response = json.loads(requests.request("POST", url, headers=headers, data=payload).text)
  26.     print(response)
  27.    
  28. def get_access_token():
  29.     url = "https://aip.baidubce.com/oauth/2.0/token"
  30.     params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
  31.     return str(requests.post(url, params=params).json().get("access_token"))
  32. if __name__ == '__main__':
  33.     main()
复制代码
但是报错了{'error_code': 336006, 'error_msg': 'the length of messages must be an odd number', 'id': 'as-i3svf9qncg'}
报错说消息必须是基数,我又灵机一动,将message改为如下:
   "messages": [
              {
                  "role": "system",
                  "content": "你是一个数学家",
              },
              {
                  "role": "user",
                  "content": "1+1等于几"
              },
              {
                  "role": "user",
                  "content": "告诉我答案"
              }
          ],
  但是仍然报错{'error_code': 336006, 'error_msg': 'the length of messages must be an odd number', 'id': 'as-i3svf9qncg'}
好吧,您高贵,我继续换
   "messages": [
              {
                  "role": "system",
                  "content": "你是一个数学家",
              },
              {
                  "role": "user",
                  "content": "1+1等于几"
              },
              {
                  "role": "assistant",
                  "content": "1+1等于几"
              }
          ]
   
  报错酿成{'error_code': 336006, 'error_msg': 'the role of first message must be user', 'id': 'as-vgqmazcvbf'}了 
怎么解决

在各种尝试各种报错后,我去翻看官方文档,化身福尔摩斯后找到了解决方案,system和assistant不是不让放内里吗,那我放外面总行了吧,酿成如许
   "messages": [
              {
                  "role": "user",
                  "content": "1+1等于几"
              }
          ],
          "system": "你是一个数学家",
  完备代码如下
  1. import requests
  2. import json
  3. API_KEY = ""
  4. SECRET_KEY = ""
  5. def main():
  6.     url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie_speed?access_token=" + get_access_token()
  7.     payload = json.dumps({
  8.         "messages": [
  9.             {
  10.                 "role": "user",
  11.                 "content": "1+1等于几"
  12.             }
  13.         ],
  14.         "system": "你是一个数学家",
  15.         "temperature": 1,
  16.         "top_p": 1
  17.     })
  18.     headers = {
  19.         'Content-Type': 'application/json'
  20.     }
  21.    
  22.     response = json.loads(requests.request("POST", url, headers=headers, data=payload).text)
  23.     print(response)
  24.    
  25. def get_access_token():
  26.     url = "https://aip.baidubce.com/oauth/2.0/token"
  27.     params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
  28.     return str(requests.post(url, params=params).json().get("access_token"))
  29. if __name__ == '__main__':
  30.     main()
复制代码
 终于能生成答案了,感天动地

记载一下,文心一言太难用了,有很多其他额外的限定 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表