python+Ollama库实现简单的AI模型问答交互

目录

调用官方服务

本地服务

使用request库调用模型接口

使用openai库调用本地模型api

使用ollama库加载模型

上下文历史消息对话


调用官方服务

需要在对应的平台注册,如deepseek:DeepSeek

python 复制代码
import keyring
from openai import OpenAI

service_name, username = 'deepseek_test', 'API_KEY1'

API_KEY = keyring.get_password(service_name, username)

client = OpenAI(api_key=API_KEY, base_url="https://api.deepseek.com/v1")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "你好,有什么可以帮到你的。"},
        {"role": "user", "content": "你是机器人吗?"},
    ],
    stream=False
)

print(response.choices[0].message.content)

本地服务

需要先在本地部署对应的模型

安装ollama库:pip install ollama -i https://pypi.mirrors.ustc.edu.cn/simple/

使用request库调用模型接口

python 复制代码
import requests

ask = input('请输入你的问题:')

# Ollama中提供的chat功能的API地址
url = 'http://127.0.0.1:11434/api/chat'
# 要发送的数据
data = {
    "model": "deepseek-r1:8b",
    "messages": [{
        "role": "user",
        "content": ask}],
    "stream": False
}

# 发送POST请求
response = requests.post(url, json=data)
# 打印模型的输出文本
print(response.json()["message"]["content"])

使用openai库调用本地模型api

python 复制代码
from openai import OpenAI

ask = input('请输入你的问题:')

client = OpenAI(
    base_url='http://localhost:11434/v1/',
    api_key='ollama',
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            'role': 'user',
            'content': ask,
        }
    ],
    model='deepseek-r1:8b',
    stream=False,
    temperature=0.0,  # 0-2之间,决定生成结果的随机性,越大越随机
)

print(chat_completion.choices[0].message.content)

使用ollama库加载模型

python 复制代码
from ollama import chat
from ollama import ChatResponse

ask = input('请输入你的问题:')

response: ChatResponse = chat(
    model='deepseek-r1:8b',
    messages=[
        {
            'role': 'user',
            'content': ask,
        },
    ])

print(response['message']['content'])  # 结果同response.message.content

上下文历史消息对话

python 复制代码
from ollama import chat

messages = []

while True:
    ask = input('用户提问:')
    response = chat(
        'deepseek-r1:8b',
        messages=messages +
                 [
                     {'role': 'user', 'content': ask}
                 ])

    messages += [
        {'role': 'user', 'content': ask},
        {'role': 'assistant', 'content': response.message.content},
    ]
    print(response.message.content + '\n')
相关推荐
GlobalInfo5 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
代码山河6 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行6 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者6 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
zzu123zsw7 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
“AI国潮设计-小江”8 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc9 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读9 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放9 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下10 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python