python调研本地 DeepSeek API的例子
以下是一段调用本地 DeepSeek API 的 Python 示例代码,假设你的本地 DeepSeek 服务运行在 http://localhost:8000
(请根据实际服务的端口调整),并包含基础的错误处理和参数配置:
import requestsdef call_deepseek_api(prompt, api_key=None, max_tokens=512, temperature=0.7):"""调用本地 DeepSeek API 生成文本参数:prompt (str): 输入的提示词api_key (str): 可选,若本地服务需要 API Key 认证则填写max_tokens (int): 生成文本的最大长度(默认 512)temperature (float): 控制生成随机性的参数(0~1,越小越确定,默认 0.7)返回:str: 生成的文本内容(成功时)或错误信息(失败时)"""# 本地 API 地址(根据实际服务端口修改,常见如 8000/8080/5000)api_url = "http://localhost:8000/v1/chat/completions" # 假设接口路径为 /v1/chat/completions# 请求头(根据实际服务要求调整,可能需要添加 Authorization 或 Content-Type)headers = {"Content-Type": "application/json",}if api_key:headers["Authorization"] = f"Bearer {api_key}" # 若服务需要 Bearer Token 认证# 构造请求体(根据 DeepSeek API 文档调整参数,以下为通用示例)payload = {"model": "deepseek-chat", # 模型名称(根据本地部署的模型调整)"messages": [{"role": "user", "content": prompt} # 用户输入的提示],"max_tokens": max_tokens,"temperature": temperature,"stream": False # 是否流式输出(False 为一次性返回完整结果)}try:# 发送 POST 请求response = requests.post(api_url, json=payload, headers=headers, timeout=30)response.raise_for_status() # 若 HTTP 状态码非 200 则抛出异常# 解析响应(根据实际接口返回结构调整,以下为通用示例)result = response.json()# 假设返回结构包含 "choices" 列表,每个元素有 "message" 字段generated_text = result["choices"][0]["message"]["content"]return generated_textexcept requests.exceptions.RequestException as e:# 处理网络相关错误(连接失败、超时等)return f"请求失败: {str(e)}"except (KeyError, IndexError) as e:# 处理响应解析错误(如接口返回结构不符)return f"解析响应失败,可能接口返回格式变化: {str(e)}"except Exception as e:# 其他未知错误return f"未知错误: {str(e)}"# -------------------------- 示例用法 --------------------------
if __name__ == "__main__":# 你的输入提示user_prompt = "请用 Python 写一个计算斐波那契数列前 n 项的函数,并给出示例。"# 调用 API(若本地服务需要 API Key,替换为你的 key;否则留 None)output = call_deepseek_api(prompt=user_prompt,api_key=None, # 例如:"your-api-key-here"(如果需要)max_tokens=1024, # 根据需求调整生成长度temperature=0.5 # 调整生成随机性(0 更确定,1 更随机))# 打印结果print("生成的回复:")print(output)
使用说明:
-
安装依赖:需要先安装
requests
库,若未安装可通过pip install requests
安装。 -
调整参数:
api_url
:根据本地 DeepSeek 服务的实际地址修改(例如若服务运行在8080
端口,则改为http://localhost:8080/...
)。model
:根据本地部署的模型名称调整(例如可能是deepseek-7b-chat
或其他)。headers
:若本地服务需要认证(如 API Key),需按服务要求添加(例如Authorization: Bearer <key>
)。payload
:根据 DeepSeek API 文档调整请求体结构(例如部分服务可能需要prompt
直接作为参数,而非messages
列表)。
-
验证服务是否启动:确保本地 DeepSeek 服务已正确启动(例如通过
curl http://localhost:8000
测试是否能返回有效响应)。
常见问题排查:
- 连接失败:检查服务是否启动、端口是否正确(可通过
netstat -tlnp
查看端口占用)。 - 401 Unauthorized:可能是 API Key 错误或未正确配置认证。
- 400 Bad Request:可能是请求体参数格式错误(需对照 API 文档检查)。
- 500 Internal Error:可能是服务端内部错误(查看服务日志排查)。
如果你的本地 DeepSeek 服务是自定义接口(非通用 OpenAI 格式),请根据实际接口文档调整 api_url
、headers
和 payload
的结构。