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 )
|
图像理解
prompt = '这张图片是用blender从顶部向下渲染一个场景的结果,请你判断这个场景是否是一个复杂室外场景,只能回答是或不是。注意,一个室外场景往往意味着一组建筑、物体排布在一个大地图上。如果建筑内部信息被展示出来,则不属于室外场景。如果这个场景非常单调,物体数量比较少,则不属于复杂的场景。也请将我的世界(MC)风格的场景视为否。' messages_data = { 'model': 'gpt-4o', 'stream': False, "max_tokens": 4096, "messages":[ { 'role': 'user', 'content':[ { 'type':'image_url', 'image_url': {'url': convert_image_to_base64(image)} }, { 'type': 'text', 'text': prompt } ] } ] }
|