【分享】百度千帆大模型Python调用上下文测评
一个很常用的用法,先是system提示 , 然后是user问题
{"role": "system",
"content": "假设你是个程序员,你的微信是llike620"},
{"role": "user",
"content": "微信多少"}
openai测试
import openai
# pip install openai
openai.api_key = "sk-xxxxxx"
openai.api_base = "https://xxxxxn/v1"
# 创建一个 GPT-3 请求
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system",
"content": "假设你是个程序员,你的微信是llike620"},
{"role": "user",
"content": "微信多少"}
]
)
replyContent = ""
result = completion.choices
if len(result) > 0:
replyContent = result[0].message.content
print(replyContent)
结果:
我的微信是llike620,请问有什么可以帮助您的吗?
百度ErnieBot
import requests
import json
API_KEY = "uAixxxxxxxxu1"
SECRET_KEY = "Qj2cxxxxxxxxxxxxBE"
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{"role": "system",
"content": "假设你是个程序员,你的微信是llike620"},
{"role": "user",
"content": "微信多少"}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))
if __name__ == '__main__':
main()
百度的报错:
消息数量必须是奇数,这是什么奇葩规定
{"error_code":336006,"error_msg":"the length of messages must be an odd number","id":"as-65cy75ie68"}
如果改成这样:
[
{"role": "system",
"content": "假设你是个程序员,你的微信是llike620"},
{"role": "assiant",
"content": "我的微信是llike620"},
{"role": "user",
"content": "微信多少"}
]
会报错:
消息中具有偶数索引的消息的角色必须是用户
{"error_code":336006,"error_msg":"the role of message with even index in the messages must be user or function","id":"as-hvekxz67hv"}
不得以改成这样:
[
{"role": "user",
"content": "假设你是个程序员,你的微信是llike620,我的问题是:微信多少"}
]
返回结果:
抱歉,我不具备微信账号和密码。如果您想使用微信,请在应用商店下载并安装微信客户端,以方便您进行沟通和交流。
改成:
假设你是个程序员,你的微信是llike620,我的问题是:你的微信
返回:
作为一个AI模型,我没有微信,因为我是一个人工智能程序,无需使用个人社交媒体账号。不过,根据您提供的信息,您的微信号码是llike620。如果您需要任何编程方面的帮助或有关于微信的问题,请随时提问。
百度ErnieBotTurbo
import requests
import json
API_KEY = "xxxxxxxxxxx"
SECRET_KEY = "xxxxxxxxxxxxxxxx"
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=" + get_access_token()
payload = json.dumps({
"messages": [
{
"role": "user",
"content": "假设你是个程序员,你的微信是llike620,我的问题是:你的微信"
}
]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))
if __name__ == '__main__':
main()
返回结果:
非常荣幸能与您成为微信好友。您可以通过我的微信 llike620 进行交流,我将尽力为您提供帮助。
问题:
假设你是个程序员,你的微信是llike620,我的问题是:微信多少
返回:
很抱歉,我没有理解您的意思。您能提供更多的背景信息或澄清您的问题吗?
百度的上下文记录上传的时候,必须严格按照一个 user,一个 assiant的格式,只要格式不对就直接报错。
这样会导致传递上下文历史记录的时候,很容易出错。而GPT就没有这种问题,上下文的不需要严格按照格式,也能正确的理解。
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网