【番外】04:Python 和 LabVIEW 对接 DeepSeek API

文章目录

  • [1. Python 对接方法](#1. Python 对接方法)
  • [2. 协议参数分析](#2. 协议参数分析)
  • [3. LabVIEW 对接方法](#3. LabVIEW 对接方法)

1. Python 对接方法

在 Python 中,可以通过 OpenAI 的格式来访问 DeepSeek 模型。

使用前,需要先登录 DeepSeek 开放平台,申请一个 api_key ,并充值一定金额。

网址:https://platform.deepseek.com

以对话 API 为例,代码如下:

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="DEEPSEEK_API_KEY",			# 替换成自己的 api_key.
    base_url="https://api.deepseek.com")

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

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

2. 协议参数分析

对于上文的 Python 范例,我们通过在 openai 底层代码中的关键位置加一些 print(),探明其等效的 HTTPS 请求如下:

python 复制代码
URL:		https://api.deepseek.com/chat/completions
Method:		POST

Header:		"content-type" : "application/json"
			"authorization" : "Bearer api_key"

Body:		b'''
			{"model": "deepseek-v4-pro",
			"messages": [
						{"role": "user", "content": "Hello!"}
						],
			"thinking": {"type": "enabled"},
			"reasoning_effort": "high",
			"stream": false}
			
			'''

注意:

(1)Header 还有很多,上面只列出了必须的 2 项,其余的不必写入请求;

(2)authorization 的值为 "Bearer + 空格 + 自己的api_key",固定格式,大小写也必须一致;

(3)Body 为 JSON 格式的二进制字符串,其中涉及的布尔值 (true 和 false),必须小写;

发送请求后,DeepSeek 服务器返回 JSON 作为响应结果,格式如下:

python 复制代码
{
"id":"5f70d312-2bbf-4826-8305-a5175ffff1e4",
"object":"chat.completion",
"created":1779367066,
"model":"deepseek-v4-pro",

"choices":[{"index":0,
			"message":{"role":"assistant",
					   "content":"Hi there! How can I help you today?",
					   "reasoning_content":"We need to respond to the user's greeting. The user said \"Hello!\" in the conversation. It's a simple greeting. My response should be friendly and engaging, offering assistance. I'll reply warmly and ask how I can help."
					   },
			"logprobs":null,
			"finish_reason":"stop"}],
			
"usage":{"prompt_tokens":6,
		 "completion_tokens":59,
		 "total_tokens":65,
		 "prompt_tokens_details":{"cached_tokens":0},
		 "completion_tokens_details":{"reasoning_tokens":48},
		 "prompt_cache_hit_tokens":0,
		 "prompt_cache_miss_tokens":6},	
		 	 
"system_fingerprint":"fp_9954b31ca7_prod0820_fp8_kvcache_20260402"
}

其中,choices 是具体响应内容,choices[0]["message"]["content"] 是AI的回答,紧随其后的 "reasoning_content" 是 AI 的思考过程(它心里的小九九)。usage 统计了本次请求消耗的 tokens 数量。


3. LabVIEW 对接方法

在 LabVIEW 中,我们采用底层 HTTPS 协议来对接 DeepSeek API。

相关函数位于:Functions >> Data Communication >> Protocols >> HTTP Client ,如下图。

根据上文所述的协议参数,调用相关VI,实现等效的 HTTPS 请求。如下图。

至此,基本对接方法已经实现。接下来,我们进行一些优化。

  • 优化1:JOSN 格式转化

在前面的 VI 中,我们直接用一大段JSON字符串来描述请求参数。这对于参数修改与接口封装很不方便。

现在,改用 LabVIEW 的簇结构来组织请求参数,然后再调用 Flatten To JSON 函数,转换成JSON字符串,传递给 POST 进行发送。

与此同时,对于服务器返回的响应,调用 Unflatten From JSON 函数,从中提取出我们所需的 message 数据。

提取路径为:choices -> 0 -> message

优化后的程序框图如下:

  • 优化2:中文及特殊字符的处理

DeepSeek 支持动态语言切换。只要你在发送的请求中使用中文来描述问题,那么返回的响应也将是中文的结果。

但是,DeepSeek 的请求与响应都是 UTF-8 编码,而大多数 LabVIEW 采用与操作系统一致的中文编码(比如,中国大陆为 GBK 编码)。为了能与 DeepSeek 适配,我们需要将请求字符串统一转换成 UTF-8 编码。同时,再将返回的响应转换为系统编码,从而保证中文正常显示。

LabVIEW 自带一对互逆的转换函数:Text to UTF-8 和 UTF-8 to Text ,可以用来实现上述转换功能。

(虽然是自带的,但它们不在任何选板中,很难找到。有需要的读者,请下载本文附带的范例,从中拷贝使用。)

好消息: JSON 转化函数自带编码转换功能。

如果您采用上文所述的 JSON 转化来处理请求参数与返回响应的话,那么恭喜您,通常不必再进行 UTF-8 编码转换了。

因为 Flatten To JSON 函数本身就会将 LabVIEW 簇中的中文转成UTF-8 编码。同时 Unflatten From JSON 函数本身就能将 UTF-8 编码的 JSON 字符串转化成系统编码的 LabVIEW 变量。

坏消息: DeepSeek 喜欢卖萌,常常返回表情符号。

DeepSeek 返回的响应中,如果出现无法解码的符号,会导致 Unflatten From JSON 函数报错。

这与中文编码无关,纯英文对话时,也可能返回表情符号。就像这样:

解决办法:

对于 DeepSeek 返回的字符串,先用 UTF-8 to Text 解码,再用 Text to UTF-8 编码,最后传递给 Unflatten From JSON 进行转换。

这个看似无用的 "反复" 操作,实际上会提前过滤非法字符,并替换成双问号 (??) ,从而避免直接传递给 Unflatten From JSON 发生报错。优化后的程序框图如下:

  • 其他优化
    DeepSeek 服务器有时会很忙碌,或者由于问题过于复杂,导致响应超时。您可以通过 POST 函数的下方接线端,设置自定义的超时时间。(默认为 10000 毫秒,即 10 秒)

相关推荐
小新同学^O^4 小时前
简单学习 --> 限流和熔断
数据库·python·学习
kyraaa14 小时前
618智能灭蚊器什么牌子好?电灭蚊灯哪个牌子好用?综合测评希亦、绳池等10大热门灭蚊灯品牌!
大数据·人工智能·python
deephub4 小时前
推理 → 行动 → 观察:用 LangChain + Python 实现一个智能体循环
人工智能·python·langchain·大语言模型·agent
码界筑梦坊4 小时前
143-基于Python的景点热度分析数据可视化分析系统
python·信息可视化·数据分析·毕业设计·fastapi
独隅4 小时前
PyTorch转TFLite动态形状量化指南
人工智能·pytorch·python
隔壁大炮4 小时前
MNE-Python 第3天学习笔记:事件与标记处理
python·eeg·mne·脑电数据处理
隔壁大炮4 小时前
MNE-Python 第5天学习笔记:数据预处理(二)—— 伪迹处理
python·eeg·mne·脑电数据处理
夕除4 小时前
spring boot 12
java·开发语言·python
码界筑梦坊4 小时前
141-基于FLask的骑行装备销售订单数据可视化分析系统
python·信息可视化·数据分析·flask·毕业设计·echarts