python 调用ollama deepseek 生成文章

Ollama 搭配 DeepSeek 模型在本地进行文章生成,是一个既有趣又实用的选择。下面我将为你介绍如何通过 Python 来完成这件事,并提供一些优化技巧。

首先,通过一个表格来快速了解两种主要的调用方法:

 
 
调用方式 优点 适用场景
直接 HTTP 请求 依赖少(requests库即可),控制直接 快速测试,简单集成
官方 Python 库 代码更简洁,兼容OpenAI格式 复杂应用,需要工具调用,从OpenAI项目迁移

🔌 基础API调用方法

确保 Ollama 服务正在运行(默认地址为 http://localhost:11434),并且已通过 ollama pull deepseek-chat 或类似命令拉取了所需的 DeepSeek 模型。

使用直接 HTTP 请求

这是最基础的方式,使用 requests 库调用 Ollama 的 /api/generate 端点。

python
import requests

url = "http://localhost:11434/api/generate"
data = {
    "model": "deepseek-chat",  # 请确保这是你已拉取的正确模型名
    "prompt": "请用马克吐温的风格写一篇关于人工智能如何改变现代教育的短文,要求生动幽默,字数在500字左右。",
    "stream": False,  # 为True时启用流式响应,适合长文本
    "options": {
        "temperature": 0.7,  # 控制创造性:越高越随机,越低越确定
        "top_p": 0.9,       # 影响采样词汇的范围
        "max_tokens": 2000  # 控制生成文章的最大长度
    }
}

response = requests.post(url, json=data)

if response.status_code == 200:
    result = response.json()
    print(result["response"])  # 打印生成的文章
else:
    print(f"请求失败,状态码:{response.status_code}")
    print(response.text)

使用 Ollama Python 库

Ollama 提供了一个官方的 Python 库,让调用变得更简单。首先需要安装:pip install ollama

1. 基础生成

python
import ollama

response = ollama.generate(
    model="deepseek-chat",
    prompt="撰写一篇关于可再生能源未来发展的科技评论文章,需包含太阳能和风能的关键分析。",
    options={
        "temperature": 0.7,
        "top_p": 0.9
    }
)
print(response['response'])

2. 流式输出
对于生成长篇文章,流式输出可以提供实时反馈,提升体验。

python
import ollama

stream = ollama.generate(
    model="deepseek-chat",
    prompt="以探险家的口吻,描述在热带雨林中发现一个未知古代文明的经历。",
    stream=True
)

# 逐块打印生成内容
for chunk in stream:
    print(chunk['response'], end='', flush=True)

3. 对话补全接口
如果文章生成需要多轮“对话”来引导和细化,使用 /api/chat 端点更合适,因为它能更好地维护上下文。

python
import ollama

response = ollama.chat(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "你是一位资深财经作家,擅长用通俗易懂的语言解读复杂的市场现象。"},
        {"role": "user", "content": "写一篇分析未来五年量子计算对金融行业潜在影响的文章。"},
        # 可以继续添加多轮对话,例如:
        # {"role": "user", "content": "把重点放在对风险评估模型的影响上,并补充一个例子。"}
    ],
    options={
        "temperature": 0.5,  # 财经类文章可适当降低temperature,增加严谨性
        "max_tokens": 1500
    }
)
print(response['message']['content'])

4. 工具调用(高级功能)
Ollama 支持工具调用,这能让模型在生成文章时获取外部信息。例如,让模型调用一个获取最新天气的函数来丰富文章内容。

python
import ollama

response = ollama.chat(
    model='llama3.1',  # 请确保你使用的模型支持工具调用
    messages=[{
        'role': 'user',
        'content': '写一篇关于旧金山今日天气如何影响市民户外活动的短文。'
    }],
    tools=[{
        'type': 'function',
        'function': {
            'name': 'get_current_weather',
            'description': '获取指定城市的当前天气',
            'parameters': {
                'type': 'object',
                'properties': {
                    'city': {'type': 'string', 'description': '城市名称'},
                },
                'required': ['city'],
            },
        },
    }],
)
# 注意:工具调用返回后,你需要根据模型的请求(在response['message']['tool_calls']中)实际执行函数,并将结果再次发送给模型

💡 生成文章的实用技巧

掌握了基础调用后,下面这些技巧能帮助你获得质量更高的文章: