调用大模型
大模型接口规范
大模型接口说明
- 大模型开发是通过访问模型对外暴露的API接口,实现与大模型的交互。
- 大多数大模型都遵循OpenAI接口规范,是基于Http协议的接口。因此请求路径、参数和返回值信息都是类似的。
- 以DeepSeek官方的文档为例
from openai import OpenAI# 1.初始化OpenAI客户端,要指定两个参数:api_key、base_url
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")# 2.发送http请求到大模型,参数比较多
response = client.chat.completions.create(model="deepseek-chat", # 2.1.选择要访问的模型messages=[ # 2.2.发送给大模型的消息{"role": "system", "content": "You are a helpful assistant"},{"role": "user", "content": "Hello"},],stream=False # 2.3.是否以流式返回结果
)print(response.choices[0].message.content)
- 参数说明
- api_key : 就是前面在百炼平台获取的api key
- base_url : 平台的请求路径
- DeepSeek官方平台 : https://api.deepseek.com
- 阿里云百炼平台 : https://dashscope.aliyuncs.com/compatible-mode/v1
- 本地ollama部署的模型 : http://localhost:11434
- model : 要访问的模型名称
- stream : true代表响应结果流式返回(显示生成的过程); false表示一次性返回
- messages(又称Prompt 提示词) : 这里是数组,包含发送给大模型的消息
- 包含两个字段: "role" :角色(system/user), "content":"xxx内容"
提示词角色
-
role角色有三种
-
system : 大模型设定的角色(人设)和任务背景
-
user : 使用者
-
assistant : 由大模型生成的消息(回答),可能是上一轮对话生成的结果
+
![image]()
system : 你叫豆包,是一个ai智能助手 user : 在瓦罗兰特中,“颗秒”是什么意思 assistant : 指用一颗子弹就将敌人爆头秒杀。 -
-
为什么还要有system呢? 这是因为在与豆包,deepseek等AI平台聊天是,不是直接发送给大模型,而是先发到网站的服务器,服务器后台将问的问题和system通过调用模型提供的api发给大模型,然后大模型基于system设定回答
- 当你问问题时,AI就会遵循System的设定来回答了。因此,不同的大模型由于System设定不同,回答的答案也不一样。
-
![image]()
会话记忆问题
- 为什么还要把历史消息放入Message中,形成数组呢?
- 因为大模型是没有记忆的,因此我们调用API接口与大模型对话时,每一次对话信息都不会保留,多次对话之间都是独立的,没有关联的。
- 需要每一次发送请求时,都把历史对话中每一轮的User消息、Assistant消息都封装到Messages数组中,一起发送给大模型,这样大模型就会根据这些历史对话信息进一步回答,就像是拥有了记忆一样。
调用大模型接口
- 百炼平台提供了图像化的试验台,可以测试模型接口


- 本地模型调用
- Ollama在本地部署时,会自动提供模型对应的Http接口,访问地址是:http://localhost:11434/api/chat
- 发送POST请求,写好请求体,正常来说请求头加上api-key进行权限校验,但本地模型是没有权限校验的,可以随便调用。
![image]()


