首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-04-22 01:01
  • 2714
  • 5393
juejin.cn

前言

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

1.png

然而,随着工作难度的进一步增强,如何快速、高效地使用这些强大的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_url和api_key

  2. 设置请求参数,其中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技术分享中会详细演示,大家感兴趣可关注我的微信公众号:大模型真好玩, 工作学习中的大模型经验知识全部免费分享。

  3. 解析请求返回对象,非流式调用返回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,并通过具体的代码示例帮助大家快速上手。

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

2.png

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

3.png

image.png

  1. 这里使用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)

6.png

三、 使用DeepSeek API构建多轮对话机器人

熟悉DeepSeek API的调用过程后,下面通过一个小项目:构建多轮对话机器人帮助大家进一步玩转大模型编程,理解对话网站的逻辑。完整代码在: codecopy.cn/post/jgd6iw

  1. 导入openai格式包,并创建deepseek访问客户端:
ini
代码解读
复制代码
from openai import OpenAI client = OpenAI(api_key="填入你的api", base_url="https://api.deepseek.com")
  1. 创建请求体的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)
  1. 定义解析用户提问后大模型返回结果的函数:
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
  1. 定义多轮对话的函数逻辑, 首先创建上下文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
  1. 调用多轮对话函数multi_round_chat(),开始与大模型对话吧~:

7.png

四、DeepSeek API 调用详细参数

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

参数名类型必填/可选默认值说明
modelstring必填无指定要使用的模型 ID,例如 deepseek-chat 或 deepseek-reasoner。
storeboolean or null可选false是否存储本次对话的输出,供模型精炼或评估产品使用。
metadataobject or null可选null开发者自定义的标签和值,用于过滤仪表盘中的补全结果。
frequency_penaltynumber or null可选0数值在 -2.0 到 2.0 之间,正值减少重复生成内容的可能性。
logit_biasmap可选null调整某些特定 tokens 出现的可能性,值在 -100 到 100 之间。
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.0 到 2.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流式响应的选项,仅当 stream 为 true 时设置。
temperaturenumber or null可选1控制生成输出的随机性,值越高生成的文本越随机。建议调整此值或 top_p,而不是同时调整。
top_pnumber or null可选1使用核采样方法,选择最有可能的 tokens,总概率达到 top_p 百分比。建议与 temperature 二选一。
toolsarray可选null模型可以调用的工具列表,目前仅支持函数调用。
userstring可选null表示最终用户的唯一标识符,用于监控和检测滥用行为。

五、总结

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

值得注意的是,大模型可不仅仅有对话功能,上面介绍过的tool message参数还没使用呢,它与大模型的函数调用Function Calling能力息息相关,Function Calling能力可以帮助大模型调用工具函数获得更高阶能力,例如谷歌搜索,计算器,天气查询等功能,让大模型不只能对话更会“上天入地”!下篇文章我们分享大模型Function Calling实战指南,大家一起期待一下吧~ (在写了在写了,兄弟们别催)

大家对人工智能大模型领域感兴趣可以关注笔者wx公众号:大模型真好玩,免费分享工作实践中大模型开发使用经验和资料~

注:本文转载自juejin.cn的大模型真好玩的文章"https://juejin.cn/post/7484638486995025954"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top