抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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
# api_key需要自己申请
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
)
# 再将completion的输入和结果塞入history中

图像理解

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
}
]
}
]
}

评论