第三章:获取 API Key 与跑通单轮对话

我们平时使用的主流大模型(如 DeepSeek、豆包、Gemini 等),都是厂商已经封装好网页或 App 界面。我们输入文字,它们给出回复。

那么,如果我们想脱离现成的网页,自己动手实现一个类似的聊天机器人,该怎么做呢?

其实,各大模型厂商都对外提供了 API(应用程序接口)。我们可以把 API 理解为大模型的“隐藏后门”,通过编写简单的代码向这个后门发送请求,就能把大模型的能力接入到我们自己的程序里。

今天,我们就以 DeepSeek 为例,从零开始跑通这个流程!

第一步:获取大模型的API Key

在使用大模型服务之前,我们需要先去官方平台申请一个身份凭证,这个凭证被称为 API Key

进入平台:打开 DeepSeek 官网,点击 “API 开放平台”

创建密钥:进入后台后,点击“API Keys”菜单,创建一个新的密钥。

妥善保存:创建成功后,系统会弹出一个长字符串类似 sk-xxxx...请务必立刻复制并保存到本地(比如记事本里)。出于安全考虑,这个 Key 往往只完整显示一次,后续它将作为你调用大模型的“通关令牌”。

第二步:理解大模型的对话语言(Messages 格式)

拿到API Key后,我们来看看如何跟大模型“打交道”。打开 DeepSeek 官方文档,我们重点观察它的请求体格式

发送请求时,最核心的参数是一个名为 messages数组(Array)。数组里的每一个元素都是一个对象,包含两个关键字段:

  • role (角色):声明这句话是谁说的。
  • content (内容):具体说话的内容。

在 API 对话中,主要有以下三种角色:

角色 (role) 含义 作用
system 系统提示词 用来给模型设定背景规则。例如输入 {"role": "system", "content": "你扮演一个冷酷的赛博朋克杀手"},接下来的对话模型都会维持这个高冷的人设。
user 用户 提问者。代表你(即用户)输入给机器人的问题。
assistant 助手 回答者。代表大模型给出的回复。

第三步:单轮对话测试(跑通第一行代码)

官方文档提供了现成的 Python 示例代码(你也可以选择其他语言)。我们将代码复制到本地编辑器中,将我们第一步保存的 API Key 填入代码对应的环境变量或配置项中,直接运行。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get('DEEPSEEK_API_KEY'),
    base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False,
    reasoning_effort="high",
    extra_body={"thinking": {"type": "enabled"}}
)

print(response.choices[0].message.content)

运行后,我们会得到一个结构丰富的 JSON 格式返回值

💡 核心返回字段拆解:

  • "role": "assistant":明确告知这一段内容来自大模型。
  • "content":模型的正式回复。如示例中,针对用户“你好,先做一下自我介绍”的请求,模型返回了长段的自我介绍。
  • "reasoning_content"大模型的思考过程(思维链)。这是深度思考模型(如 R1 / v4-pro)特有的字段,记录了模型在吐出最终答案前,在后台进行的逻辑推理。

在代码中如何提取回复?

在 Python 代码中,我们不需要把这一大堆 JSON 全部打印出来。通过下面这行代码,就可以精准抽取出黄色框内的最终文本:

print(response.choices[0].message.content)

取得返回参数里面得choices[0]下面得message的content,也就是日志中黄色框的区域。

🔄 进阶预告:单轮到多轮的质变

通过上面的实验,我们成功让大模型听懂并回复了我们。但聪明的你一定发现了问题:

“现在的对话是‘死’的。输入的消息是我提前硬编码在 messages 里的。而且,如果我接着问它第二个问题,它就会完全忘记上一个问题聊了什么。”

大模型的 API 本身是无状态(Stateless)的,它就像一个患了短暂健忘症的专家,每次请求都是全新的开始。

那么,如何让它拥有记忆,学会在控制台控制实时输入,进行真正连续的多轮对话呢? 下一节,我们将引入上下文管理(Context Management),真正赋予我们的 Chatbot “持久记忆”!

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
https://www.yalewoo.com/llm-chatbot.html

上一篇:

下一篇:

我要评论

验证码*: 1 + 4 =