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 message:设置用户对话内容
    • assistant message: 设置大模型输出内容和使用函数,除了contentrole字段外,还有tool_calls字段,是可选的列表类型,指定大模型要调用的函数(比如联网搜索函数,计算器函数等扩展大模型能力)
    • tool message: 在用户根据assistanttool_calls内容调用了某个函数后,用户可能还需要再把函数调用结果反馈给大模型,让大模型根据函数调用结果给出最终的总结性的答复。除了contentrole字段外,还有tool_call_id字段,表示对指定函数反馈。

    对于问答项目,一般只需要system message,user messageassistant 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开放平台:
  1. 注册DeepSeek开发者账号,并获取API密钥(API Key),使用API访问前要确保你的token余量充足。
  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)

三、 使用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(),开始与大模型对话吧~:

四、DeepSeek API 调用详细参数

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

参数名 类型 必填/可选 默认值 说明
model string 必填 指定要使用的模型 ID,例如 deepseek-chatdeepseek-reasoner
store boolean or null 可选 false 是否存储本次对话的输出,供模型精炼或评估产品使用。
metadata object or null 可选 null 开发者自定义的标签和值,用于过滤仪表盘中的补全结果。
frequency_penalty number or null 可选 0 数值在 -2.02.0 之间,正值减少重复生成内容的可能性。
logit_bias map 可选 null 调整某些特定 tokens 出现的可能性,值在 -100100 之间。
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.02.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 流式响应的选项,仅当 streamtrue 时设置。
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公众号:大模型真好玩,免费分享工作实践中大模型开发使用经验和资料~

相关推荐
九亿AI算法优化工作室&32 分钟前
SA模拟退火算法优化高斯回归回归预测matlab代码
人工智能·python·算法·随机森林·matlab·数据挖掘·模拟退火算法
Blossom.11837 分钟前
基于Python的机器学习入门指南
开发语言·人工智能·经验分享·python·其他·机器学习·个人开发
郝YH是人间理想2 小时前
Python面向对象
开发语言·python·面向对象
藍海琴泉2 小时前
蓝桥杯算法精讲:二分查找实战与变种解析
python·算法
默 语2 小时前
10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?
人工智能·电脑·todesk
Donvink4 小时前
【Dive Into Stable Diffusion v3.5】2:Stable Diffusion v3.5原理介绍
人工智能·深度学习·语言模型·stable diffusion·aigc·transformer
宇灵梦4 小时前
大模型金融企业场景落地应用
人工智能
lsrsyx4 小时前
中信银行太原长治路支行赴老年活动服务中心开展专题金融知识宣讲
大数据·人工智能
烟锁池塘柳04 小时前
【深度学习】Self-Attention机制详解:Transformer的核心引擎
人工智能·深度学习·transformer
Matrix_115 小时前
论文阅读:Self-Supervised Video Defocus Deblurring with Atlas Learning
人工智能·计算摄影