手把手教你用Python调用本地Ollama API

作者:youqing · 2025-10-29 · 阅读时间:6分钟

收藏它,10 分钟完成环境搭建 → 三种调用方式 → 参数调优,立刻拥有本地大模型!


一、环境准备 🛠️

环境准备
Image Source: pexels

1. 安装 Ollama ⚙️

  1. 访问 Ollama 官网 → 下载对应系统安装包
  2. 运行安装程序 → 命令行输入 ollama 验证

    代码示例讲解概念 一行行对比「macOS vs Windows」安装脚本差异!

2. 配置 Python 环境 🐍

  • Python ≥ 3.8
  • 安装依赖:
    pip install requests ollama langchain

    -(可选)创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # macOS/Linux
    venv\Scripts\activate     # Windows

    代码安全审计 扫描 requirements.txt,自动剔除已知漏洞版本!


二、使用 Python 调用本地 Ollama API 的三种方法 🛠️

三种方法
Image Source: pexels

1. 使用 Ollama 库 🚀

① 安装与初始化

pip install ollama
from ollama import Client
client = Client(host="http://localhost:11434")

② 调用示例

resp = client.generate(prompt="你好,Ollama!")
print(resp["response"])

③ 性能指标

字段 含义
total_duration 总响应时间
eval_count Token 评估次数
eval_duration 评估耗时

代码优化助手eval_count / eval_duration 自动换算为「Tokens/秒」并打印!


2. 使用 LangChain 库 🦜

① 安装与配置

pip install langchain
from langchain.llms import Ollama
llm = Ollama(model="llama2")

② 调用示例

result = llm("你好,Ollama!")
print(result)

③ 性能指标

指标 含义
响应时间 请求→返回总耗时
吞吐量 单位时间请求数
错误率 失败请求占比

智能代码审查助手 检查 langchain.llms.Ollama 初始化参数,防止因 base_url 缺失导致 404!


3. 使用 Requests 库 🌐

① 构造 HTTP 请求

import requests
url = "http://localhost:11434/api/generate"
data = {"prompt": "你好,Ollama!", "stream": False}
resp = requests.post(url, json=data, stream=False)
print(resp.json()["response"])

② 解析 JSON 结果

result = resp.json()
print(result["response"])

JavaScript代码反混淆专家 解开前端 stream=True 的 EventSource 混淆逻辑,确保流式输出不乱码!


三、Ollama API 关键参数详解 🔍

1. temperature 🌡️

  • 作用:控制随机性(0.2 确定性强,1.0 创意性强)
  • 调优:技术问答设为 0.2,创意写作可尝试 1.2

2. stream 🌊

  • 作用:启用流式输出,适合聊天机器人
  • 示例
    for chunk in client.generate(prompt="你好", stream=True):
    print(chunk["response"], end="")

3. 其他常用参数 ⚙️

参数 默认值 说明
max_tokens 100 最大生成长度
top_p 0.9 累积概率阈值
frequency_penalty 1.0 降低重复词概率

代码片段解析助手 秒懂「top_p vs temperature」同时调用的最佳实践!


四、常见问题及解决方法 🐛

1. Ollama 无法启动 ❌

  • 检查安装ollama --version
  • 验证服务curl http://localhost:11434
  • 查看日志journalctl -u ollama

2. API 调用失败 🚫

  • 网络ping localhost:11434
  • 权限:确认无防火墙拦截
  • 重试机制
    import requests, time
    for i in range(3):
    try:
        r = requests.post(url, json=data)
        if r.status_code == 200:
            break
    except Exception as e:
        print(f"retry {i+1}", e)
        time.sleep(2)

    代码优化专家助手 把重试逻辑封装为装饰器,一行代码搞定!

3. 安全性问题 🔒

  • API Key:本地部署无需 Key,但可配置 OLLAMA_ORIGINS 限制来源
  • HTTPS:反向代理 + Nginx 证书
  • 访问控制:防火墙仅开放内网 IP

五、总结与建议 🏁

  • Ollama 库:简单快速,适合原型
  • LangChain:生态丰富,适合复杂业务
  • Requests:零依赖,适合嵌入式场景

深入学习 Ollama 官方文档,尝试调整 temperature/top_p 组合,结合 Redis 缓存,打造属于你的高性能本地 AI 服务!