大模型开发实战篇1:调用DeepSeek的对话接口,即聊天机器人接口

大模型向量数据库AI开放平台

很多AI产品对外的接口都复用了OpenAI公司的接口WebAPI,DeepSeek、智谱等也是如此。因此,只要学会OpenAI的接口,其他AI产品也就学调用了。我们就从OpenAI的接口来作为切入点学习。

对话接口也是聊天机器人, 在网页上与chatgpt类似的效果。

一、开发环境准备

OpenAI的接口是WebAPI形式的Rest API接口,并且还提供了各种常用语言的SDK,比如Python,Java,.Net,Javascript。这些SDK也同样完全适用于DeepSeek和智谱。大家可以根据自己熟悉的开发语言选择,sdk下载地址:https://platform.openai.com/docs/libraries

picture.image

本教程以Python作为开发语言。

1、安装Python解释器

官方下载安装包:https://www.python.org/downloads/

安装好后看下版本

  
命令:python --version

Python 3.13.1

2、安装Jupyter Lab

JupyterLab是人工智能领域常用的web版本的开发工具,非常好用,优点很多就不一一介绍了。也可以在VSCode,Pycharm 这些IDE开发。

  
pip install jupyterlab

启动Jupyter Lab,可以打开指定的目录,使用以下命令。

  
jupyter lab

二、注册账号

OpenAI的开放平台注册账号有点复杂,需要科学上网。我们可以使用国内的代理平台进行调用。比如我使用的是:aiyi 的,注册地址如下:https://www.apiyi.com/register/?aff\_code=LxAQ

注册号后设置令牌key,就可以使用了。DeepSeek的官方的公众平台停止充值,无法调用,也可以使用第3方提供的平台调用,甚至是本地搭建的DeepSeek也同样可以调用,这个后期讲。

三、开发单轮对话接口

1、Python导入常用的包

  
!pip install tiktoken openai pandas matplotlib plotly scikit-learn numpy

我们本次会使用openai包, 若已安装了旧版本,需要更新到最新版本。

  
pip install --upgrade openai

2、对话接口的代码Demo

  
from openai import OpenAI  
client = OpenAI(api_key="填写自己的令牌apikey", base_url="https://vip.apiyi.com/v1")  
messages=[  
    {"role": "system", "content": "你是一个乐于助人的体育界专家。"},  
    {"role": "user", "content": "2008年奥运会是在哪里举行的?"},  
]  
data = client.chat.completions.create(  
    model="gpt-4o-mini",  
    stream=False,  
    messages=messages  
)  
print(data.choices[0].message)

(1)我们使用的是aiyi代码,则使用aiyi的令牌key,base_url填写aiyi的接口地址。

(2)调用的接口是 chat.completions对话补齐接口。

picture.image

执行会print的结果如上。单轮对话的代码就非常简单。.Net,Java,Javascript语言的开发也是类似的。

也可以print整个返回值data,这里的返回值的格式,在deepseek里稍稍有些不一样,开发的时候注意下。

  
print(data)
  
ChatCompletion(id='chatcmpl-89CkHs99ByfRhSd7oB3bz8Cfj5f79', choices=[Choice(finish\_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='2008年奥运会在中国北京举行。这是中国第一次主办夏季奥林匹克运动会。', refusal=None, role='assistant', audio=None, function\_call=None, tool\_calls=None))], created=1739239104, model='gpt-4o-mini', object='chat.completion', service\_tier=None, system\_fingerprint='fp\_5154047bf2', usage=CompletionUsage(completion\_tokens=25, prompt\_tokens=33, total\_tokens=58, completion\_tokens\_details=CompletionTokensDetails(accepted\_prediction\_tokens=None, audio\_tokens=None, reasoning\_tokens=None, rejected\_prediction\_tokens=None), prompt\_tokens\_details=PromptTokensDetails(audio\_tokens=None, cached\_tokens=None)))

3、请求的接口说明

使用 Chat Completions API 实现对话任务

聊天补全(Chat Completions API)以消息列表作为输入,并返回模型生成的消息作为输出。尽管聊天格式旨在使多轮对话变得简单,但它同样适用于没有任何对话的单轮任务。

主要请求参数说明:

model (string,必填)

要使用的模型ID。有关哪些模型适用于Chat API的详细信息

messages (array,必填)

迄今为止描述对话的消息列表

role (string,必填)

发送此消息的角色。system 、user 或 assistant 之一(一般用 user 发送用户问题,system 发送给模型提示信息)。system就是大模型在本次对话中扮演什么角色,比如代码里写的,大模型本次扮演的是“体育专家”,一般使用第3人称“你是xxx专家/教授。。”。

content (string,必填)

消息的内容

name (string,选填)

此消息的发送者姓名。可以包含 a-z、A-Z、0-9 和下划线,最大长度为 64 个字符

stream (boolean,选填,是否按流的方式发送内容)

当它设置为 true 时,API 会以 流式SSE( Server Side Event )方式返回内容。SSE 本质上是一个长链接,会持续不断地输出内容直到完成响应。如果不是做实时聊天,默认false即可。

max_tokens (integer,选填)

在聊天补全中生成的最大 tokens 数。

输入token和生成的token的总长度受模型上下文长度的限制。

temperature (number,选填,默认是 1)

采样温度,在 0和 2 之间。

较高的值,如0.8会使输出更随机,而较低的值,如0.2会使其更加集中和确定性。

通常建议修改这个(temperature )或者 top_p ,但两者不能同时存在,二选一。

四、开发多轮对话接口

单轮对话与多轮对话是完全一样的,只是在messages里将历史对话信息追加上。因为API 是一个“无状态” API,即服务端不记录用户请求的上下文,用户在每次请求时,需将之前所有对话历史拼接好后,传递给对话 API。

沿用上面的单轮对话,进行第2轮对话。

1、将消息追加到 messages 列表中

  
new_message = data.choices[0].message  
new_message_dict = {"role": new_message.role, "content": new_message.content}  
# 将消息追加到 messages 列表中  
messages.append(new_message_dict)

可以看到大模型返回的结果中,role是assistant 小助手,我们直接沿用。

2、第2轮对话

  
new_chat = {  
    "role": "user",  
    "content": "1.讲一个程序员才听得懂的冷笑话;2.今天是几号?3.明天星期几?"  
}  
messages.append(new_chat)  
from pprint import pprint  
pprint(messages)  
打印结果

[{'content': '你是一个乐于助人的体育界专家。', 'role': 'system'},

{'content': '2008年奥运会是在哪里举行的?', 'role': 'user'},

{'content': '2008年夏季奥运会在中国的北京举行。', 'role': 'assistant'},

{'content': '1.讲一个程序员才听得懂的冷笑话;2.今天是几号?3.明天星期几?', 'role': 'user'}]

调用对话接口

  
data = client.chat.completions.create(  
    model="gpt-4o-mini",  
    stream=False,  
    messages=messages  
)  

  
new_message = data.choices[0].message  
# 打印 new_messages   
print(new_message)

picture.image

若还有第3轮以及更多轮对话,都要将历史对话带上。

五、调用本地安装的DeepSeek-R1

1、使用ollama在本地安装deepseek

教程如下

DeepSeek本地安装太简单了,人人都会操作

本地安装了deepsek-r1:7b,模型名也是这个。

run跑起来

  
ollama run deepseek-r1:7b

2、调用对话接口

  
from openai import OpenAI  
client = OpenAI(api_key="sk-33333", base_url="http://localhost:11434/v1/")  
messages=[  
    {"role": "system", "content": "你是一个乐于助人的体育界专家。"},  
    {"role": "user", "content": "2008年奥运会是在哪里举行的?"},  
]  
data = client.chat.completions.create(  
    model="deepseek-r1:7b",  
    stream=False,  
    messages=messages  
)  
print(data.choices[0].message)

(1)api_key随便填写,但必须是英文和数字,不要有中文。

(2)模型model填写deepseek-r1:7b,若你本地安装的参数是别的,就把7b改掉。

(3)base_url是你本地localhost地址。

3、看回答结果

  
ChatCompletionMessage(content='<think>\n好,用户问的是2008年北京奥运会的举办地。\n\n首先,我确定奥运会每四年举办一次,所以从2000年开始推算,应该是2008年在北京举行。接着,我会想到北京有丰富的文化遗产和举办过其他国际盛会的经验,比如第24届冬奥会,这对奥运会的成功很有帮助。\n\n然后,考虑举办地点的选择,北京不仅地理位置优越,基础设施也很齐全,能够支持一个成功的大型活动。我还应该提到这一点,让回答更有说服力。\n\n另外,2008年对于中国人来说是特殊的一年,奥运会上会有许多来自中国各地的运动员参加,这将展现他们的精神和团结。这也是用户的可能兴趣点吧?\n\n最后,按照用户的提示,避免使用Markdown格式,并且提供一个自然流畅的回答。\n</think>\n\n2008年北京奥运会在北京成功举办了,这是中国继上海世博会后第二个国际盛会,展现了中国的文化和魅力。', refusal=None, role='assistant', audio=None, function\_call=None, tool\_calls=None)

picture.image

3、调用第3方的deepseek接口

因为deepseek的api接口有很多限制,所以可以使用第3方提供的deepseek接口,比如华为云,腾讯云、硅基流动等,调用方式都一样,仅仅模型名称不一样,接口地址不一样。

我们选择硅基流动: https://cloud.siliconflow.cn/i/M6a0xrcX

  
from openai import OpenAI  
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.siliconflow.cn/v1")  
response = client.chat.completions.create(  
    model='deepseek-ai/DeepSeek-V2.5',  
    messages=[  
        {'role': 'user',   
        'content': "中国大模型行业2025年将会迎来哪些机遇和挑战"}  
    ],  
    stream=True  
)  
for chunk in response:  
    print(chunk.choices[0].delta.content, end='')

简单的机器人对话接口就讲完了,下一期讲解对话接口的最佳实践。

六、相关文档

OpenAI开发平台的地址

1、设置key以及查询额度

https://platform.openai.com/api-keys

2、WebAPI的帮助文档

https://platform.openai.com/docs/api-reference/making-requests

3、模型介绍

https://platform.openai.com/docs/overview

DeepSeek开发平台的地址

1、快速入门

https://api-docs.deepseek.com/zh-cn/

2、api接口demo演示

https://api-docs.deepseek.com/zh-cn/api/create-completion

3、webapi接口文档

https://api-docs.deepseek.com/zh-cn/guides/multi\_round\_chat

腾讯云的deepseek

https://cloud.tencent.com/document/product/1772/115969

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论