一、引言
在第三章中,我们成功地使用Python连接到了DeepSeek API并发送了请求。然而,仅仅发送请求并得到响应还不够,我们需要对API返回的响应进行有效的处理,从中提取出我们所需的信息,以便后续用于文生视频的制作。本章将详细介绍如何处理DeepSeek API的响应,包括解析响应数据、提取关键信息以及处理可能出现的异常情况。
二、理解DeepSeek API响应结构
DeepSeek API的响应通常采用JSON(JavaScript Object Notation)格式。JSON是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。它由键值对组成,数据可以是字符串、数字、布尔值、数组或嵌套的JSON对象。
例如,假设我们使用DeepSeek的文本生成API请求生成一段描述风景的文本,API的响应可能如下:
{
"generated_text": "在那遥远的地方,有一片宁静的湖泊。湖水如镜,倒映着周围青山的轮廓。微风拂过,湖面泛起层层涟漪,仿佛是大自然演奏的美妙乐章。湖边的草地上,五颜六色的花朵竞相开放,散发出阵阵芬芳。偶尔有几只小鸟飞过,打破了这片宁静,增添了几分生机。",
"processing_time": 2.3,
"model_version": "v1.0"
}
在这个示例中,响应包含了三个主要的键值对:
generated_text
:表示根据我们的请求生成的文本内容。processing_time
:表示API处理请求所花费的时间(单位:秒)。model_version
:表示使用的模型版本。
不同的DeepSeek API可能会有不同的响应结构,具体的结构和字段含义需要参考DeepSeek提供的API文档。
三、使用Python解析JSON响应
在Python中,我们可以使用内置的 json
模块来解析JSON格式的响应数据。json
模块提供了两个主要的函数:loads()
和 load()
。loads()
函数用于将JSON字符串解析为Python对象,而 load()
函数用于从文件中读取JSON数据并解析为Python对象。
以下是一个使用 json
模块解析DeepSeek API响应的示例:
import requests
import json
api_url = "https://api.deepseek.com/generate"
params = {
"text": "生成一段描述风景的文本"
}
response = requests.get(api_url, params=params)
if response.status_code == 200:
try:
# 将响应内容解析为Python字典
data = json.loads(response.text)
print("解析后的响应数据:", data)
except json.JSONDecodeError:
print("响应内容不是有效的JSON格式")
else:
print("请求失败,状态码:", response.status_code)
在这个示例中,我们首先使用 requests
库发送GET请求到DeepSeek API。如果请求成功(状态码为200),我们使用 json.loads()
函数将响应内容解析为Python字典。如果解析过程中出现错误,会捕获 json.JSONDecodeError
异常并打印错误信息。
另外,requests
库本身也提供了一个方便的方法 json()
来直接将响应内容解析为Python对象,使用起来更加简洁:
import requests
api_url = "https://api.deepseek.com/generate"
params = {
"text": "生成一段描述风景的文本"
}
response = requests.get(api_url, params=params)
if response.status_code == 200:
try:
# 直接使用response.json()方法解析响应内容
data = response.json()
print("解析后的响应数据:", data)
except ValueError:
print("响应内容不是有效的JSON格式")
else:
print("请求失败,状态码:", response.status_code)
四、提取关键信息
解析JSON响应后,我们需要从Python字典中提取出我们所需的关键信息。以之前的示例响应为例,如果我们只关心生成的文本内容,可以使用以下代码提取 generated_text
字段的值:
import requests
api_url = "https://api.deepseek.com/generate"
params = {
</