当前位置:首页>python>使用Python第一次实现调用大模型API

使用Python第一次实现调用大模型API

  • 2026-09-27 23:43:59
使用Python第一次实现调用大模型API
Python调大模型,可以直接使用模型厂商(deepseek、qwen、GLM等)提供的API接口,但是需要付费。当然也可以直接调用本地自己部署的大模型。

一、调用deepseek开放平台API

样例代码:

# Please install OpenAI SDK first: `pip3 install openai`import osfrom openai import OpenAI# 创建客户端,与AI大模型交换# DEEPSEEK_API_KEY: 环境变量,用于保存你自己的deepseekAPI keyclient = OpenAI(    api_key=os.environ.get('DEEPSEEK_API_KEY'),    base_url="https://api.deepseek.com")# 与AI大模型交互的参数# role = system 是系统角色,用于给大模型指定角色,content是角色描述# role = user 是用户角色,content是你的问题,也就是提示词response = client.chat.completions.create(    model="deepseek-chat",    messages=[        {"role": "system", "content": "你是一个乐于助人的小助手,你可以准确幽默的回答用户提出的问题"},        {"role": "user", "content": "我想买一些苹果,苹果单价5.9元一斤,苹果单果重量300~500g,我现在有10元钱,那么我能买多少苹果?"},    ],    stream=False)# 大模型返回的结果print(response.choices[0].message.content)""" 大模型回答结果中的”结论“部分内容:**结论**:  在 300~500 克范围内,  - 如果苹果重量 **超过约 424 克**,你只能买 **1 个**。  - 如果苹果重量 **不超过约 424 克**,你可以买 **2 个**。  由于现实中你可以挑选,所以 **最可能买到 2 个中等偏小的苹果**,但若只买大的,就只能买 1 个。"""

调用需参考官方文档,从DeepSeek官方主页可进入。

如上,还是很简单的,这只是开始,还需不断探索。

二、Python调用ollama本地部署的大模型

通过 Python 调用本地 Ollama 服务来使用 deepseek-r1:1.5b 模型。Ollama 提供了两种常用方式:直接使用 HTTP API 或 使用官方的 ollama Python 库。推荐使用 ollama 库,代码更简洁。

以下是详细步骤、代码示例及注意事项。

1. 环境准备

确保 Ollama 已安装并运行

  • 从 ollama.com 下载并安装 Ollama。
  • 打开终端/命令行,运行 ollama serve 启动服务(如果已安装并配置为自启动,则服务已运行)。
  • 确认模型已拉取:
    ollama pull deepseek-r1:1.5b

安装 Python 依赖

安装 ollama Python 库(它是官方提供的 HTTP API 的封装):

pip install ollama

(可选)若需手动控制 HTTP 请求,也可安装 requests:

pip install requests

2. Python 代码示例

使用 ollama 库(推荐)

import ollama# 非流式:一次性返回完整结果response = ollama.chat(    model='deepseek-r1:1.5b',    messages=[        {"role": "system", "content": "你是一个乐于助人的小助手,你可以准确幽默的回答用户提出的问题"},        {"role": "user", "content": "我想买一些苹果,苹果单价5.9元一斤,苹果单果重量300~500g,我现在有10元钱,那么我能买多少苹果?"},    ],    stream=False)print(response['message']['content'])""" 答案:根据苹果的价格和重量的关系,以及您的预算,您只能买到约 **1.8 千克** 苹果。解释:- 约 **2 千克** 是以 **每公斤 5.9 元** 的价格购买的。- 每个苹果的重量约为 **300-400 克**,根据苹果的单价计算,您只能买到约 **1.8 千克**。"""

流式输出:

import ollamaresponse = ollama.chat(    model='deepseek-r1:1.5b',    messages=[{'role': 'user', 'content': '写一首关于春天的短诗。'}],    stream=True)for chunk in response:    print(chunk['message']['content'], end='', flush=True)

使用 requests 库直接调用 HTTP API

import requestsimport jsonurl = "http://localhost:11434/api/chat"payload = {    "model": "deepseek-r1:1.5b",    "messages": [{"role": "user", "content": "讲个笑话"}],    "stream": False}response = requests.post(url, json=payload)data = response.json()print(data["message"]["content"])

流式输出:

import requestsimport jsonurl = "http://localhost:11434/api/chat"payload = {    "model": "deepseek-r1:1.5b",    "messages": [{"role": "user", "content": "讲个笑话"}],    "stream": True}with requests.post(url, json=payload, stream=True) as r:    for line in r.iter_lines():        if line:            chunk = json.loads(line)            if "message" in chunk and "content" in chunk["message"]:                print(chunk["message"]["content"], end="", flush=True)

3. 参数说明与扩展

在 ollama.chat() 中可以通过 options 参数调整生成行为,例如:

ollama.chat(    model='deepseek-r1:1.5b',    messages=[...],    options={        'temperature': 0.7,   # 控制随机性,范围 0~2,值越高越随机        'top_p': 0.9,         # 核采样,保留概率质量之和达到 top_p 的 token        'max_tokens': 500,    # 最大生成 token 数        'stop': ['\n\n']      # 停止词    })

HTTP API 同样支持 options 字段,将其放入请求的 JSON 中即可。

4. 注意事项

  1. Ollama 服务必须运行
    默认监听 http://localhost:11434。如果服务未启动,调用会失败。

  2. 模型名称严格匹配
    拉取时可能带有版本号,例如 deepseek-r1:1.5b,调用时必须使用完全相同的名称。可通过 ollama list 查看已安装模型。

  3. 网络与超时
    本地调用一般稳定,但若生成内容较长,建议设置超时(例如 requests.post(..., timeout=60)),避免程序卡住。

  4. 资源占用
    deepseek-r1:1.5b 是 1.5B 参数的小模型,对显存和 CPU 要求较低,但仍需确保电脑有足够内存(至少 2GB 可用)。

  5. 错误处理
    添加 try-except 捕获 ollama.ResponseError 或 requests.exceptions.RequestException,便于排查问题。

  6. 上下文管理
    ollama.chat 本身不维护对话历史,你需要自己将历史消息列表传入 messages 中实现多轮对话。

  7. 流式与阻塞
    流式输出适合实时显示;非流式则直接返回完整响应,适用于需要一次性处理结果的场景。

5. 多轮对话示例

import ollamamessages = []while True:    user_input = input("你: ")    if user_input.lower() in ['exit', 'quit']:        break    messages.append({'role': 'user', 'content': user_input})    response = ollama.chat(        model='deepseek-r1:1.5b',        messages=messages,        stream=False    )    assistant_reply = response['message']['content']    print(f"AI: {assistant_reply}")    messages.append({'role': 'assistant', 'content': assistant_reply})

通过以上方法,你就可以在 Python 中轻松调用本地 Ollama 部署的 DeepSeek-R1 模型了。根据实际需求选择同步或流式方式,并合理设置生成参数,即可获得满意的服务。

最新文章

随机文章