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')
相关推荐
时光追逐者24 分钟前
一款基于 .NET 8 + Vue 开源的、企业级中后台权限管理系统
前端·vue.js·microsoft·开源·c#·.net·.netcore
拖拉机1 小时前
Python(二)列表简介
python
这里有鱼汤1 小时前
用 Python 画 K 线图,做量化的朋友一定要掌握的技能
前端·后端·python
学地理的小胖砸1 小时前
【python读取并显示遥感影像】
开发语言·python
这里有鱼汤1 小时前
📈 Python金融数据神器:AkShare全解析,量化交易必备!
前端·后端·python
凌叁儿1 小时前
修改adaconda里的jupyter工作路径
ide·python·jupyter
令狐少侠20112 小时前
python之安装PaddlePaddle和PaddleX解析pdf表格
python·ai·pdf·paddlepaddle
三道杠卷胡2 小时前
【AI News | 20250409】每日AI进展
人工智能·python·语言模型·github·aigc
meisongqing2 小时前
Python: 实现数据可视化分析系统
python
HAPPY酷3 小时前
linux安装mysql常出现的问题
linux·运维·服务器·python·mysql·adb