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')
相关推荐
励志不掉头发的内向程序员20 小时前
从零开始的python学习——文件
开发语言·python·学习
THMAIL20 小时前
量化基金从小白到大师 - 金融数据获取大全:从免费API到Tick级数据实战指南
人工智能·python·深度学习·算法·机器学习·金融·kafka
代码欢乐豆20 小时前
scikit-learn零基础配置(含python、anaconda)
python·机器学习·scikit-learn
Java水解21 小时前
Python数据库操作:SQLAlchemy ORM指南
python
悠哉悠哉愿意21 小时前
【数学建模学习笔记】无监督聚类模型:分层聚类
笔记·python·学习·数学建模
eleqi21 小时前
Python+DRVT 从外部调用 Revit:批量创建门
python·系统集成·bim·revit·drvt·自动生产流水线
先做个垃圾出来………21 小时前
PyTorch 模型文件介绍
人工智能·pytorch·python
浅醉樱花雨21 小时前
vosk语音识别实战
人工智能·python·语音识别·asr·vosk
再努力"亿"点点21 小时前
爬取m3u8视频完整教程
开发语言·python
悟能不能悟1 天前
if __name__=‘__main__‘的用处
python