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')
相关推荐
测试19989 小时前
软件测试 - 单元测试总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
曲幽11 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
前端若水12 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
涛声依旧-底层原理研究所13 小时前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer
csdn_aspnet13 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
richard_yuu13 小时前
鸿蒙治愈游戏模块实战|四大轻量解压游戏、ArkTS动画交互与低功耗落地
游戏·交互·harmonyos
fantasy_arch14 小时前
pytorch人脸匹配模型
人工智能·pytorch·python
熊猫_豆豆14 小时前
广义相对论水星近日点进动完整详细数学推导
python·天体·广义相对论
web3.088899914 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
AI算法沐枫14 小时前
深度学习python代码处理科研测序数据
数据结构·人工智能·python·深度学习·决策树·机器学习·线性回归