OpenAI 兼容 API 调用
煎蛋平台的智能体可以通过OpenAI 兼容 API 的方式被其他软件或者OpenAI 库直接调用,你可以很容易的把创建的煎蛋智能体接入类似Chatbox或者cherryStudio这样的开源软件中。你也可以通过API的方式把煎蛋智能体的能力接入已有的业务系统中。
以下是对应的OpenAI API 关键参数:
基准URL(BaseURL)
model 参数
Model参数为智能体的GUID,可以在智能体浏览器里查到:
apiKey 参数
apiKey 为 智能体的API密钥:
其他OpenAI 参数
智能体 API 支持其他OpenAI API 规定的参数,其中常用的参数包括:
max_tokens: 模型回复最大长度(单位 token),这个长度还受模型的上下文长度限制。
stream:是否需要流式输出,这个设置要配合智能体的输出节点的 流式输出 输出设置才能正常工作。如果智能体不支持流式输出,则即使API参数里设置了 steam 为 true, 也无法实现流式输出。
temperature: 采样温度。控制了生成文本时对每个候选词的概率分布进行平滑的程度。取值范围为 [0, 1]。当取值为 0 时模型仅考虑对数概率最大的一个 token。 较高的值(如 0.8)会使输出更加随机,而较低的值(如 0.2)会使输出更加集中确定。通常建议仅调整 temperature 或 top_p 其中之一,不建议两者都修改。
top_p: 核采样概率阈值。模型会考虑概率质量在 top_p 内的 token 结果。取值范围为 [0, 1]。当取值为 0 时模型仅考虑对数概率最大的一个 token。 如 0.1 意味着只考虑概率质量最高的前 10% 的 token,取值越大生成的随机性越高,取值越低生成的确定性越高。通常建议仅调整 temperature 或 top_p 其中之一,不建议两者都修改。
⚠️ 注意:不支持tools参数。
标准OpenAI请求示例
以下为使用curl命令的请求示例
curl https://gendial.cn/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer API_KEY \
-d '{
"model": AGENT_GUID,
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
煎蛋平台扩展参数
除了标准的OpenAI 参数之外,API 调用还支持以下的参数,用以支持平台复杂的智能体功能。
memoryId 参数
memoryId 是服务端用来记录用户与智能体的当前对话历史,和当前智能体运行的节点状态的信息。每次API调用时,可以传递memoryId参数,用来标识当前对话的历史。智能体每次回复都会返回memoryId字段,供客户端复用。
与OpenAI的API规范结合后,可以有以下几种情况:
不使用memoryId:这种模式是标准的OpenAI规范调用方式,客户端需要自行组织对话历史,并通过messages字段发送给智能体。每一次调用都会被智能体认为是一次全新的对话,都从流程的开始节点执行,每次智能体都会回复新的memoryId。此种模式适合简单的,不涉及到循环工作流的大模型问答。
使用memoryId:在这种情况下,客户端第一次与智能体对话不发送memoryId,等待智能体返回memoryId之后,记录下当前memoryId。在后续的对话中传递这个memoryId,这样智能体就能够知道对话历史和运行的当前节点状态。如果想要开启新的对话,只要不传递memoryId即可。
在使用memoryId的情况下,客户端无需自行组织对话历史。也就是说 messages 字段只需要一个用户消息,智能体会从服务端会自行获取保存的对话历史进行处理。智能体获取的对话历史数目可以在智能体设置里设定。
在与复杂的,包含循环工作流的智能体对话时,需要正确的使用memoryId参数,否则每次对话都会从头开始,导致智能体无法正常工作。
imageUrl 参数
在智能体 / 大模型支持图片多模态能力的情况下,可以通过API传递 imageUrl 参数。这个imageUrl参数和OpenAI 规范里的 image_url一致,既可以用imageUrl 进行传递也可以在messages里用 image_url传递
fileUrl 参数
在智能体支持文件的多模态能力的情况下,可以通过API传递 fileUrl 参数。这个url必须是平台能够访问到的地址。传递这个参数之后,智能体就可以通过系统变量 {{sys.fileUrl}} 来引用,用于代码节点等进行下载和读取。
originalFileName 参数
在智能体支持文件的多模态能力的情况下,可以通过API传递 originalFileName 参数。这个参数需要和前面的 fileUrl 参数匹配使用。递这个参数之后,智能体就可以通过系统变量 {{sys.fileName}} 来引用。
variables 参数
除了标准的OpenAI api,煎蛋智能体 API 还可以传递 variables 参数。这个参数是用来设置智能体运行时的变量值,这样就可以通过 API 来控制智能体的工作流和具体行为。
variables的格式为字符串字典对象:
{"key1": "value1","key2": "value2",..,"keyN": "valueN"}
煎蛋平台扩展的API调用示例
curl https://gendial.cn/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer API_KEY \
-d '{
"model": AGENT_GUID,
"memoryId": YOUR_MEMORY_ID,
"messages": [
{
"role": "user",
"content": "Hello!"
}
],
"fileUrl": YOUR_FILE_URL,
"originalFileName": FILE_NAME,
"variables": {
"var1": "value1",
"var2": "value2",
}
}'