news 2026/4/24 18:37:46

DeepSeek大模型API实战指南,python一键调用AI超能力打造多轮对话机器人!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek大模型API实战指南,python一键调用AI超能力打造多轮对话机器人!

在人工智能技术飞速发展的今天,大模型已经成为各行各业提升效率的利器。从会议记录撰写到代码编程,从数据分析到总结报告生成等各个领域都少不了大模型的参与。目前大家使用大模型的方法基本是在对话界面向大模型提出问题并得到解决方案。

然而,随着工作难度的进一步增强,如何快速、高效地使用这些强大的AI能力,创造更便捷的AI工具,成为了许多开发者和企业的痛点。大模型的API调用,正是解决这一问题的关键!

一、API调用的优势

相比传统的问答网站,API调用有如下便捷优势,是广大程序员发挥创造力的利器:

  • 快速集成,降低开发成本:API调用允许开发者通过简单的接口,将DeepSeek大模型的强大能力嵌入到自己的应用或系统中。无论是文本生成、数据分析,还是智能客服,API都能快速实现功能集成,无需从头开发复杂的AI模型。
  • 灵活扩展,满足多样化需求:通过API调用,开发者可以根据业务需求灵活调整调用频率和规模。无论是小型项目还是大型企业级应用,API都能轻松应对,实现按需扩展。
  • 高效稳定,提升用户体验:API调用基于云端服务,具备高可用性和低延迟的特点。用户无需担心本地硬件性能不足,也能享受到流畅的AI服务体验。

二、 大模型OpenAI调用格式

2.1 OpenAI调用格式详解

OpenAI 作为行业领军者,不仅开发出gpt-4,gpt-o1等知名大模型,还统一了大模型的API请求规范,分为如下三步:

  1. 实例化客户端,指定大模型的base_urlapi_key

  2. 设置请求参数,其中messages是必填参数,类型是列表,每个列表项由contentrole字段组成,有system message,user message,assistant message,tool message四种:

    对于问答项目,一般只需要system message,user messageassistant message三个字段,tool message一般用于设置大模型调用扩展函数的能力,是开发AI Agent的关键,在下一篇Fucntion Calling技术分享中会详细演示,大家感兴趣可关注我的微信公众号:大模型真好玩, 工作学习中的大模型经验知识全部免费分享。

  • system message:

    设置系统消息, 提供对话背景

  • user message:

    设置用户对话内容

  • assistant message:

    设置大模型输出内容和使用函数,除了contentrole字段外,还有tool_calls字段,是可选的列表类型,指定大模型要调用的函数(比如联网搜索函数,计算器函数等扩展大模型能力)

  • tool message:

    在用户根据assistanttool_calls内容调用了某个函数后,用户可能还需要再把函数调用结果反馈给大模型,让大模型根据函数调用结果给出最终的总结性的答复。除了contentrole字段外,还有tool_call_id字段,表示对指定函数反馈。

  1. 解析请求返回对象,非流式调用返回chat completion object(大模型一次性输出全部回答), 包括

    流式调用(大模型一个词一个词输出, 问答网站的常见形式)返回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!

  • id:

    本次会话唯一标识符

  • choices:

    响应的内容列表, choices列表项中message对象的content字段记录了大模型回答的内容

  • created:

    聊天完成时间

  • model:

    用于聊天的模型

  • usage:

    本次聊天统计请求,包括生成token的数目等

2.2 构造OpenAI请求格式访问DeepSeek大模型

通过上面的介绍,想必大家已经详细了解了OpenAI大模型调用格式。我们的国产大模型之光—DeepSeek大模型也支持通过OpenAI格式调用。下面我们将详细介绍如何使用Python 结合 OpenAI 格式请求,调用DeepSeek API,并通过具体的代码示例帮助大家快速上手。

  1. 进入DeepSeek官网,并点击API开放平台:

  1. 注册DeepSeek开发者账号,并获取API密钥(API Key),使用API访问前要确保你的token余量充足。

  1. 这里使用python进行API调用演示,执行pip install openai下载openai请求格式库,编写如下代码测试访问,可以看到请求参数包含了上面讲过的base_url,api_key以及两种message,返回结果保存在response对象的choice属性中。
from openai import OpenAIclient = 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的调用过程后,下面通过一个小项目:构建多轮对话机器人帮助大家进一步玩转大模型编程,理解对话网站的逻辑。完整代码在: https://codecopy.cn/post/jgd6iw

  1. 导入openai格式包,并创建deepseek访问客户端:
from openai import OpenAIclient = OpenAI(api_key="填入你的api", base_url="https://api.deepseek.com")
  1. 创建请求体的messages列表(列表包含多轮对话的历史信息),每个messages列表项包括role角色和content内容两个属性:
def create_message(role, content): return { "role": role, "content": content }def process_user_input(input_text): return create_message("user", input_text)
  1. 定义解析用户提问后大模型返回结果的函数:
def chat_with_DeepSeek(client, messages): response = client.chat.completions.create( model="deepseek-chat", # 使用 deepseek-chat 模型 messages=messages ) # 提取并返回助手生成的回复内容 return response.choices[0].message.content
  1. 定义多轮对话的函数逻辑, 首先创建上下文messages列表,设置背景system_message, 把每轮对话的用户输入处理为user_message,系统回复处理为assistant_message,统统添加到messages列表中,让大模型了解到历史对话背景:
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
  1. 调用多轮对话函数multi_round_chat(),开始与大模型对话吧~:

四、DeepSeek API 调用详细参数

除了常用的modelmessages参数,DeepSeek模型 API调用还有其它许多别的参数,这里直接给大家列一个总表,大家按需传参:

参数名类型必填/可选默认值说明
modelstring必填指定要使用的模型 ID,例如deepseek-chatdeepseek-reasoner
storeboolean or null可选false是否存储本次对话的输出,供模型精炼或评估产品使用。
metadataobject or null可选null开发者自定义的标签和值,用于过滤仪表盘中的补全结果。
frequency_penaltynumber or null可选0数值在-2.02.0之间,正值减少重复生成内容的可能性。
logit_biasmap可选null调整某些特定 tokens 出现的可能性,值在-100100之间。
logprobsboolean or null可选false是否返回生成的每个 token 的对数概率。
top_logprobsinteger or null可选null指定返回最有可能出现的前几个 tokens 及其概率,需开启logprobs
max_completion_tokensinteger or null可选null指定模型生成的最大 token 数,包括可见文本和推理 tokens。
ninteger or null可选1每个输入生成的对话补全选项数量,值越大,生成的回复越多。
presence_penaltynumber or null可选0数值在-2.02.0之间,正值鼓励生成新的主题和内容。
response_formatobject可选null指定生成结果的格式,可以设置为json_schema以确保结构化输出,或json_object用于 JSON 格式。
seedinteger or null可选null保持生成的一致性,重复相同请求将尽量生成相同的结果。
service_tierstring or null可选auto指定服务延迟等级,适用于付费订阅用户,默认为auto
stopstring / array / null可选null最多指定 4 个序列,API 遇到这些序列时会停止生成进一步的 tokens。
streamboolean or null可选false是否启用流式响应,若启用,生成的 tokens 将逐步返回。
stream_optionsobject or null可选null流式响应的选项,仅当streamtrue时设置。
temperaturenumber or null可选1控制生成输出的随机性,值越高生成的文本越随机。建议调整此值或top_p,而不是同时调整。
top_pnumber or null可选1使用核采样方法,选择最有可能的 tokens,总概率达到top_p百分比。建议与temperature二选一。
toolsarray可选null模型可以调用的工具列表,目前仅支持函数调用。
userstring可选null表示最终用户的唯一标识符,用于监控和检测滥用行为。

五、总结

本文分享了如何使用python 代码 编写 OpenAI 访问格式来请求DeepSeek大模型,并编写了一个简单的多轮对话机器人,帮助大家理解对话网站的基本原理。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 5:01:43

22、Docker Swarm 模式:从基础到实践

Docker Swarm 模式:从基础到实践 1. 基础部署与应用上线 在容器部署中,我们可以借助相关工具实现应用的快速上线。例如,Centurion 可以完成拉取所需镜像、验证镜像拉取是否正确,接着连接到主机停止旧容器、创建新容器并启动,还会持续进行健康检查,直到容器报告健康状态…

作者头像 李华
网站建设 2026/4/16 13:03:32

24、容器编排:从 ECS 到 Kubernetes 的实践指南

容器编排:从 ECS 到 Kubernetes 的实践指南 1. ECS 任务清理与进阶准备 在使用 AWS ECS(Elastic Container Service)时,当你使用相同的任务 ID 再次描述任务,你会发现 lastStatus 键被设置为 STOPPED 。例如: $ aws ecs describe-tasks --cluster fargate-testin…

作者头像 李华
网站建设 2026/4/23 16:38:03

26、Docker高级技术深度解析

Docker高级技术深度解析 1. Kubernetes与Docker生态 Kubernetes是一个庞大的系统,社区参与度极高。它与Docker生态系统有很大的重叠部分,同时也发展出了许多自己的组件。Docker与Kubernetes之间的集成日益增强。之前我们通过Minikube让大家初步了解了相关内容,但如果你感兴…

作者头像 李华
网站建设 2026/4/19 11:09:30

29、Docker 高级配置与架构解析

Docker 高级配置与架构解析 1. Docker 网络配置 在 Docker 中,可以进行多种网络配置,基本的网络配置相对简单。例如,创建一个 macvlan 网络: $ docker network create -d macvlan \--subnet=172.16.16.0/24 \--gateway=172.16.16.1 \-o parent=eth0 ourvlan还可以通…

作者头像 李华
网站建设 2026/4/18 11:59:50

30、Docker高级特性与容器平台设计全解析

Docker高级特性与容器平台设计全解析 1. 探索runc与容器统计信息 在容器技术领域,runc是一个重要的组件。通过查看文件列表,我们能发现一些与容器配置和运行相关的文件,例如 config.json 文件,它类似于 docker inspect 的详细输出,不过由于其内容较多,这里不做展示…

作者头像 李华
网站建设 2026/4/23 21:19:21

从机房打杂到月入 5W:5 年底层打工人转行安全,说点掏心窝的实话

01、机房狗的血泪史 老子干了五年运维,从IDC到云平台,从搬服务器到舔K8s,最后发现——这行就是他妈的高级电工! 前两年在野鸡IDC: 每天重启服务器300次换硬盘比换女朋友还勤快最牛逼的技术是能用网线抽蟑螂 后来跳…

作者头像 李华