前言
在人工智能技术飞速发展的今天,大模型已经成为各行各业提升效率的利器。从会议记录撰写到代码编程,从数据分析到总结报告生成等各个领域都少不了大模型的参与。目前大家使用大模型的方法基本是在对话界面向大模型提出问题并得到解决方案。
然而,随着工作难度的进一步增强,如何快速、高效地使用这些强大的AI能力,创造更便捷的AI工具,成为了许多开发者和企业的痛点。大模型的API调用,正是解决这一问题的关键!
一、API调用的优势
相比传统的问答网站,API调用有如下便捷优势,是广大程序员发挥创造力的利器:
-
快速集成,降低开发成本: API调用允许开发者通过简单的接口,将DeepSeek大模型的强大能力嵌入到自己的应用或系统中。无论是文本生成、数据分析,还是智能客服,API都能快速实现功能集成,无需从头开发复杂的AI模型。
-
灵活扩展,满足多样化需求: 通过API调用,开发者可以根据业务需求灵活调整调用频率和规模。无论是小型项目还是大型企业级应用,API都能轻松应对,实现按需扩展。
-
高效稳定,提升用户体验: API调用基于云端服务,具备高可用性和低延迟的特点。用户无需担心本地硬件性能不足,也能享受到流畅的AI服务体验。
二、 大模型OpenAI调用格式
2.1 OpenAI调用格式详解
OpenAI 作为行业领军者,不仅开发出gpt-4
, gpt-o1
等知名大模型,还统一了大模型的API请求规范,分为如下三步:
-
实例化客户端,指定大模型的
base_url
和api_key
-
设置请求参数,其中
messages
是必填参数,类型是列表,每个列表项由content
和role
字段组成,有system message
,user message
,assistant message
,tool message
四种:system message:
设置系统消息, 提供对话背景user message:
设置用户对话内容assistant message:
设置大模型输出内容和使用函数,除了content
和role
字段外,还有tool_calls
字段,是可选的列表类型,指定大模型要调用的函数(比如联网搜索函数,计算器函数等扩展大模型能力)tool message:
在用户根据assistant
的tool_calls
内容调用了某个函数后,用户可能还需要再把函数调用结果反馈给大模型,让大模型根据函数调用结果给出最终的总结性的答复。除了content
和role
字段外,还有tool_call_id
字段,表示对指定函数反馈。
对于问答项目,一般只需要
system message
,user message
和assistant message
三个字段,tool message
一般用于设置大模型调用扩展函数的能力,是开发AI Agent的关键,在下一篇Fucntion Calling
技术分享中会详细演示,大家感兴趣可关注我的微信公众号:大模型真好玩, 工作学习中的大模型经验知识全部免费分享。 -
解析请求返回对象,非流式调用返回
chat completion object
(大模型一次性输出全部回答), 包括id:
本次会话唯一标识符choices:
响应的内容列表, choices列表项中message
对象的content
字段记录了大模型回答的内容created:
聊天完成时间model:
用于聊天的模型usage:
本次聊天统计请求,包括生成token的数目等
流式调用(大模型一个词一个词输出, 问答网站的常见形式)返回
chat completion chunk object
, 与chat completion object
唯一不同的是choices
对象, 流式调用choices
对象中有delta
字段,该字段中的content
属性是渐变的,比如第一个chunk
流的content
是"Hel",第二个chunk
流的content
是"Hello ",第三个chunk
流的content
是"Hello wo",第四个chunk
流的content
是"Hello world!
2.2 构造OpenAI请求格式访问DeepSeek大模型
通过上面的介绍,想必大家已经详细了解了OpenAI大模型调用格式。我们的国产大模型之光---DeepSeek大模型也支持通过OpenAI格式调用。下面我们将详细介绍如何使用Python 结合 OpenAI 格式请求,调用DeepSeek API,并通过具体的代码示例帮助大家快速上手。
- 进入DeepSeek官网,并点击API开放平台:
- 注册DeepSeek开发者账号,并获取API密钥(API Key),使用API访问前要确保你的token余量充足。
- 这里使用python进行API调用演示,执行
pip install openai
下载openai请求格式库,编写如下代码测试访问,可以看到请求参数包含了上面讲过的base_url
,api_key
以及两种message
,返回结果保存在response
对象的choice
属性中。
ini
from openai import OpenAI
client = OpenAI(api_key="你获得的API Key", base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"},
],
stream=False
)
print(response.choices[0].message.content)
三、 使用DeepSeek API构建多轮对话机器人
熟悉DeepSeek API的调用过程后,下面通过一个小项目:构建多轮对话机器人帮助大家进一步玩转大模型编程,理解对话网站的逻辑。完整代码在: codecopy.cn/post/jgd6iw
- 导入openai格式包,并创建deepseek访问客户端:
ini
from openai import OpenAI
client = OpenAI(api_key="填入你的api", base_url="https://api.deepseek.com")
- 创建请求体的
messages
列表(列表包含多轮对话的历史信息),每个messages
列表项包括role
角色和content
内容两个属性:
python
def create_message(role, content):
"""
创建标准的消息格式,包括用户、助手或系统消息。
参数:
role (str): 消息的角色,值为 "user"、"assistant" 或 "system"。
content (str or list): 消息的内容,文本内容。
返回:
dict: 符合 OpenAI API 要求的消息格式。
"""
return {
"role": role,
"content": content
}
def process_user_input(input_text):
"""
根据用户输入的内容,生成对应的消息格式。
参数:
input_text (str): 用户的输入文本。
返回:
dict: 生成的用户消息。
"""
return create_message("user", input_text)
- 定义解析用户提问后大模型返回结果的函数:
python
def chat_with_DeepSeek(client, messages):
"""
使用 DeepSeek 模型进行多轮对话的核心函数。
参数:
client (OpenAI): 实例化的 OpenAI 客户端。
messages (list): 包含对话上下文的消息列表,包括用户、助手和系统消息。
返回:
str: 模型生成的回复内容。
"""
response = client.chat.completions.create(
model="deepseek-chat", # 使用 deepseek-chat 模型
messages=messages
)
# 提取并返回助手生成的回复内容
return response.choices[0].message.content
- 定义多轮对话的函数逻辑, 首先创建上下文
messages
列表,设置背景system_message
, 把每轮对话的用户输入处理为user_message
,系统回复处理为assistant_message
,统统添加到messages
列表中,让大模型了解到历史对话背景:
python
def multi_round_chat():
"""
多轮对话机器人示例函数
"""
# 初始化消息列表,包含系统消息
messages = []
# 创建系统消息,设置对话的上下文
system_message = create_message("system", "You are a helpful assistant.")
messages.append(system_message)
while True:
# 捕获用户输入
user_input = input("User: ")
# 处理用户输入并生成相应的消息
user_message = process_user_input(user_input)
messages.append(user_message)
# 调用 DeepSeek 模型进行回复
assistant_reply = chat_with_DeepSeek(client, messages)
print(assistant_reply)
# 将助手回复添加到消息列表, 多轮对话必备
messages.append(create_message("assistant", assistant_reply))
# 提供退出机制,用户可以输入 'exit' 退出对话
if user_input.lower() == 'exit':
print("对话结束。")
break
- 调用多轮对话函数
multi_round_chat()
,开始与大模型对话吧~:
四、DeepSeek API 调用详细参数
除了常用的model
和messages
参数,DeepSeek模型 API调用还有其它许多别的参数,这里直接给大家列一个总表,大家按需传参:
参数名 | 类型 | 必填/可选 | 默认值 | 说明 |
---|---|---|---|---|
model | string | 必填 | 无 | 指定要使用的模型 ID,例如 deepseek-chat 或 deepseek-reasoner 。 |
store | boolean or null | 可选 | false | 是否存储本次对话的输出,供模型精炼或评估产品使用。 |
metadata | object or null | 可选 | null | 开发者自定义的标签和值,用于过滤仪表盘中的补全结果。 |
frequency_penalty | number or null | 可选 | 0 | 数值在 -2.0 到 2.0 之间,正值减少重复生成内容的可能性。 |
logit_bias | map | 可选 | null | 调整某些特定 tokens 出现的可能性,值在 -100 到 100 之间。 |
logprobs | boolean or null | 可选 | false | 是否返回生成的每个 token 的对数概率。 |
top_logprobs | integer or null | 可选 | null | 指定返回最有可能出现的前几个 tokens 及其概率,需开启 logprobs 。 |
max_completion_tokens | integer or null | 可选 | null | 指定模型生成的最大 token 数,包括可见文本和推理 tokens。 |
n | integer or null | 可选 | 1 | 每个输入生成的对话补全选项数量,值越大,生成的回复越多。 |
presence_penalty | number or null | 可选 | 0 | 数值在 -2.0 到 2.0 之间,正值鼓励生成新的主题和内容。 |
response_format | object | 可选 | null | 指定生成结果的格式,可以设置为 json_schema 以确保结构化输出,或 json_object 用于 JSON 格式。 |
seed | integer or null | 可选 | null | 保持生成的一致性,重复相同请求将尽量生成相同的结果。 |
service_tier | string or null | 可选 | auto | 指定服务延迟等级,适用于付费订阅用户,默认为 auto 。 |
stop | string / array / null | 可选 | null | 最多指定 4 个序列,API 遇到这些序列时会停止生成进一步的 tokens。 |
stream | boolean or null | 可选 | false | 是否启用流式响应,若启用,生成的 tokens 将逐步返回。 |
stream_options | object or null | 可选 | null | 流式响应的选项,仅当 stream 为 true 时设置。 |
temperature | number or null | 可选 | 1 | 控制生成输出的随机性,值越高生成的文本越随机。建议调整此值或 top_p ,而不是同时调整。 |
top_p | number or null | 可选 | 1 | 使用核采样方法,选择最有可能的 tokens,总概率达到 top_p 百分比。建议与 temperature 二选一。 |
tools | array | 可选 | null | 模型可以调用的工具列表,目前仅支持函数调用。 |
user | string | 可选 | null | 表示最终用户的唯一标识符,用于监控和检测滥用行为。 |
五、总结
本文分享了如何使用python 代码 编写 OpenAI 访问格式来请求DeepSeek大模型,并编写了一个简单的多轮对话机器人,帮助大家理解对话网站的基本原理。
值得注意的是,大模型可不仅仅有对话功能,上面介绍过的tool message
参数还没使用呢,它与大模型的函数调用Function Calling
能力息息相关,Function Calling
能力可以帮助大模型调用工具函数获得更高阶能力,例如谷歌搜索,计算器,天气查询等功能,让大模型不只能对话更会"上天入地"!下篇文章我们分享大模型Function Calling
实战指南,大家一起期待一下吧~ (在写了在写了,兄弟们别催)
大家对人工智能大模型领域感兴趣可以关注笔者wx公众号:大模型真好玩,免费分享工作实践中大模型开发使用经验和资料~