OpenAI API 几乎是所有基于大模型应用开发的底层基础(有部分大模型有自己的标准,比如早期Azure的大模型与OpenAI的并不兼容)。无论构建什么样的智能应用场景,开发的核心逻辑始终围绕这个API 的组合调用展开的。在很多智能体框架中,如SpringAI、Langchain、Autogen等等,他们都很好的对这个API进行了深度封装,但是不论框架如何封装设计,最终都会归结为向大模型的 API 接口发送一个格式化的 HTTP 请求。甚至,我们可以只用一个httpclient即可开展我们的智能体应用开发。
目前主流的大模型几乎都已经完全兼容OpenAI的接口规范(https://platform.openai.com/docs/overview ),OpenAI API 已成为事实上的行业标准接口。
所以说,只有先了解清楚OpenAI API的调用方式、入参、出参、流式/非流式输出,才能算真正理解大模型应用开发的底层原理。
1 入参说明
import os from openai
import OpenAI
try:
client = OpenAI(
# 替换成你自己的ak
api_key="<your key>",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"},
],
)
print(completion.choices[0].message.content)
except Exception as e:
print(f"错误信息:{e}")base_url:模型服务器地址。
在各种智能体框架和低代码平台中,都会要求配置此参数以指定请求发送到哪个模型服务器。
格式说明:
完整的 API 接口路径通常是:https://域名地址(或者ip+port)/v1/chat/completions
但是大多数智能体框架(如 LangChain、Autogen等)默认拼接 /chat/completions,因此我们只需配置到:https://域名地址/v1/ 即可。
而在SpringAI,他不太一样的点就是,他默认拼接的是:/v1/chat/completions。所以在SpringAI框架中的配置是只到v1之前。
常见模型的base_url:
Chatgpt:https://api.openai.com/v1
通义千问:https://dashscope.aliyuncs.com/compatible-openai/v1
DeepSeek:https://api.deepseek.com/v1
本地模型:http://<IP地址或域名>:<端口号>/v1 (如ollama:http://localhost:11434/v1)
Temperature 是「概率缩放器」,通过放大 / 缩小概率差距调整随机性,所有词都有被选中的可能(只是概率不同);
Top_p 是「概率筛选器」,通过划定累加概率门槛限定选词范围,门槛外的词完全被排除;
实战中优先用 temperature 做渐变调整,用 top_p 做精准范围控制,一般不同时调整两者。
以上就是OpenAI API的全部入参字段,加粗标记的就是正常我们使用的最多的标准字段,其他字段基本可以不用设置,因为设置的不好就非常可能会导致模型输出的不确定性,使用默认值即可。
2 输出字段说明
2.1 非流式输出
以上加粗标记的字段,是非流式输出通常最关注的字段,尤其是choices[i].message.content和choices[i].message.tool_calls,这两个就是我们后续开发智能体应用的核心参数。一切的智能体开发主要都是围绕这两个核心参数进行的。
2.2 流式输出
以上加粗标记的字段,是流式输出通常最关注的字段,尤其是choices[i].delta.content和choices[i].tool_calls,与非流式输出一样,一切的智能体开发主要都是围绕这两个核心参数进行的。
评论交流
欢迎留下你的想法