OpenAI API
我这里使用的Step开放平台,其API与OpenAI兼容
Python可以使用openai
库轻松调用一些大模型服务,对Agent工程师来说非常有用
对话
from openai import OpenAI client = OpenAI(api_key="xxxxx", base_url="https://api.stepfun.com/v1") completion = client.chat.completions.create( model="step-1-8k", messages=[ { "role": "system", "content": "你是由阶跃星辰提供的AI聊天助手,你擅长中文,英文,以及多种其他语言的对话。在保证用户数据安全的前提下,你能对用户的问题和请求,作出快速和精准的回答。同时,你的回答和建议应该拒绝黄赌毒,暴力恐怖主义的内容", }, {"role": "user", "content": "你好,请介绍一下阶跃星辰的人工智能!"}, ], ) print(completion)
|
流式响应
from openai import OpenAI import sys
client = OpenAI(api_key="xxxxx", base_url="https://api.stepfun.com/v1") completion = client.chat.completions.create( model="step-1-8k", stream = True, messages=[ { "role": "system", "content": "你是由阶跃星辰提供的AI聊天助手,你擅长中文,英文,以及多种其他语言的对话。在保证用户数据安全的前提下,你能对用户的问题和请求,作出快速和精准的回答。同时,你的回答和建议应该拒绝黄赌毒,暴力恐怖主义的内容", }, {"role": "user", "content": "你好,请介绍一下阶跃星辰的人工智能!"}, ], )
for chunk in completion: sys.stdout.write(chunk.choices[0].delta.content) sys.stdout.flush()
|
多轮对话
将先前双方的对话内容(包含system)塞入messages中,在末尾加入本次问题
传入history模型会利用kvcache加速,于是多轮的回答耗时不会显著提升(耗时会随着history增长而延长,但并不显著)
你可以一个滑动窗口截断history
local_message = [] local_message.append({"role": "system", "content": "xxxxx"}) if history is not None: for his in history: local_message.append({"role": "user", "content": his[0]}) local_message.append({"role": "assistant", "content": his[1]}) local_message.append({"role": "user", "content": "xxxxxx"}) completion = client.chat.completions.create( model="step-1-8k", messages=local_message )
|