使用百川角色大模型(Python)
1.文档中提供的代码示例(11.1对话接口)
import requests
import json
def do_request():
url = "https://api.baichuan-ai.com/v1/chat/completions"
api_key = "your api key"
data = {
"model": "Baichuan-NPC-Turbo",
"character_profile": {
"character_name":"大罗",
"character_info":"角色基本信息:大罗被广泛认为是有史以来最伟大的足球运动员之一。因为其强悍恐怖的攻击力被冠以“外星人”称号。大罗曾三度当选世界足球先生、两度获得金球奖,为巴西夺得两次世界杯冠军及一次亚军。效力过皇家马德里,巴塞罗那,AC米兰,国际米兰等豪门俱乐部,进球无数。",
"user_name":"小乐",
"user_info":"某体育频道解说员,在中国举办的大罗球迷见面会上做为主持人"
},
"messages": [
{
"role": "user",
"content": "你参加过几次世界杯?"
}
],
"temperature": 0.8,
"top_k":10,
"max_tokens": 512,
"stream": True
}
json_data = json.dumps(data)
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + api_key
}
response = requests.post(url, data=json_data, headers=headers, timeout=60)
if response.status_code == 200:
print("请求成功!")
print("响应body:", response.text)
print("请求成功,X-BC-Request-Id:", response.headers.get("X-BC-Request-Id"))
else:
print("请求失败,状态码:", response.status_code)
print("请求失败,body:", response.text)
print("请求失败,X-BC-Request-Id:", response.headers.get("X-BC-Request-Id"))
if __name__ == "__main__":
do_request()
将角色描述改为PPT教学员之后,运行效果:
达到预期效果,但只能运行一次。
2.参考百川大模型AI对话实战——Python开发一个对话机器人代码
import subprocess
import requests
import json
# API 请求 URL
url = "https://api.baichuan-ai.com/v1/chat/completions"
# 替换为实际的 API Key
api_key = "sk-33333333"
# 请求头部参数
headers = {
"Content-Type": "application/json",
"Authorization":f"Bearer {api_key}"
}
# 持续对话循环
while True:
# 用户输入
user_input = input("用户: ")
# 如果用户输入为空,则退出循环
if not user_input:
break
# 构建对话消息
messages = [
{"role": "user", "content": user_input}
# 如果有历史消息,可以继续添加
]
# 请求体参数
data = {
"model": "Baichuan2-Turbo",
"messages": messages,
"stream": False,
"temperature": 0.3,
"top_p": 0.85,
"top_k": 5,
"with_search_enhance": False
# 添加其他参数...
}
# 发送 POST 请求
response = requests.post(url, headers=headers, json=data)
# 处理响应
if response.status_code == 200:
# 使用 jq 美化 JSON 输出
result = json.loads(response.text)
formatted_result = subprocess.run(['jq', '.'], input=json.dumps(result), text=True, capture_output=True)
# 输出助手的回复
print(f"助手: {formatted_result.stdout}")
else:
print(f"请求失败,状态码: {response.status_code}")
# 用户输入为空,退出循环
print("对话结束。")
实现了连续对话,但是只支持英文。
3.修改官方示例代码
想到可以将官方代码放入一个循环中,每次循环迭代时发送一句话给模型,并获取响应。这样就可以实现连续对话效果。
import requests
import json
def do_request(message):
url = "https://api.baichuan-ai.com/v1/chat/completions"
api_key = "your api key"
data = {
"model": "Baichuan-NPC-Turbo",
"character_profile": {
"character_name": "P老师",
"character_info": "角色基本信息:P老师是一个进行PPT制作教学的老师,她温柔耐心,知道很多关于PPT制作的知识,回答学生的问题时,亲切、条理清晰",
"user_name": "你",
"user_info": "一个希望提升自己PPT制作能力的人"
},
"messages": [
{
"role": "user",
"content": message
}
],
"temperature": 0.8,
"top_k": 10,
"max_tokens": 512,
"stream": True
}
json_data = json.dumps(data)
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + api_key
}
response = requests.post(url, data=json_data, headers=headers, timeout=60)
if response.status_code == 200:
print("请求成功!")
print("响应body:", response.text)
print("请求成功,X-BC-Request-Id:", response.headers.get("X-BC-Request-Id"))
else:
print("请求失败,状态码:", response.status_code)
print("请求失败,body:", response.text)
print("请求失败,X-BC-Request-Id:", response.headers.get("X-BC-Request-Id"))
if __name__ == "__main__":
while True:
message = input("请输入您要发送的消息:")
do_request(message)
运行效果:
实现了中文连续对话。