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')
相关推荐
晓风残月淡1 小时前
JVM字节码与类的加载(二):类加载器
jvm·python·php
西柚小萌新3 小时前
【深入浅出PyTorch】--上采样+下采样
人工智能·pytorch·python
CsharpDev-奶豆哥5 小时前
ASP.NET中for和foreach使用指南
windows·microsoft·c#·asp.net·.net
shut up5 小时前
LangChain - 如何使用阿里云百炼平台的Qwen-plus模型构建一个桌面文件查询AI助手 - 超详细
人工智能·python·langchain·智能体
宝贝儿好6 小时前
【python】第五章:python-GUI编程
python·pyqt
闲人编程6 小时前
从多个数据源(CSV, Excel, SQL)自动整合数据
python·mysql·数据分析·csv·存储·数据源·codecapsule
B站_计算机毕业设计之家7 小时前
推荐系统实战:python新能源汽车智能推荐(两种协同过滤+Django 全栈项目 源码)计算机专业✅
大数据·python·django·汽车·推荐系统·新能源·新能源汽车
茯苓gao7 小时前
Django网站开发记录(一)配置Mniconda,Python虚拟环境,配置Django
后端·python·django
Full Stack Developme7 小时前
Python Redis 教程
开发语言·redis·python
码界筑梦坊7 小时前
267-基于Django的携程酒店数据分析推荐系统
python·数据分析·django·毕业设计·echarts