当前位置: 首页 > news >正文

使用 Python 调用 Ollama API 并调用 deepseek-r1:8b 模型

使用 Python 调用 Ollama API 并调用 deepseek-r1:8b 模型

  • 准备工作
  • 调用 Ollama API
    • 使用generate
    • 实现多轮对话并保留对话的记忆

ollama 是一个强大的本地大语言模型工具,支持多种开源模型,例如 deepseek-r1:8b。通过 Ollama 的 API,我们可以轻松调用这些模型来完成文本生成、对话等任务。这里记录一下如何使用 Python 调用 Ollama API,并调用 deepseek-r1:8b 模型生成文本。

准备工作

在开始之前,确保你已经完成以下准备工作:

  1. 安装 Ollama:

    如果你还没有安装 Ollama,可以参考 Ollama 官方文档 进行安装。

    安装完成后,启动 Ollama 服务。默认情况下,API 会在 http://localhost:11434 上运行。

  2. 下载 deepseek-r1:8b 模型:

    使用以下命令下载 deepseek-r1:8b 模型:

    ollama pull deepseek-r1:8b
    
  3. 安装 Python 的 requests 库:

    这里将使用 requests 库来发送 HTTP 请求。如果还没有安装,可以通过以下命令安装:

    pip install requests
    

调用 Ollama API

在此之前可以了解一下每个api大概得作用

API名称功能描述
Generate根据输入的提示生成文本,适用于文本生成任务。
Chat进行对话交互,模拟聊天机器人等场景。
Embeddings生成文本的嵌入向量,用于文本相似性比较、聚类等任务。
Pull从 Ollama 服务器下载指定的模型到本地。
List列出本地已下载的模型,查看当前可用的模型。
Delete删除本地存储的模型,释放存储空间。
Show显示模型的详细信息,如参数、版本等。
Copy复制一个模型到另一个名称,便于创建模型的副本。
Create基于现有模型创建自定义模型,支持自定义参数和配置。
Health Check检查 Ollama 服务的运行状态,确认服务是否正常。

使用generate

使用generateapi主要是生成一次内容,这个并没有记录功能,实现代码如下:

# -*- coding: utf-8 -*-
import requests

# Ollama API 的 URL
url = "http://localhost:11434/api/generate"

res = requests.post(
    url=url,
    json={
        "Model":"deepseek-r1:8b",
        "prompt":"写一首关于爱情的诗",
        "stream":False
    }
)
data_dict = res.json()
print(data_dict)

这样返回的内容会比较混乱,因为是直接返回的
在这里插入图片描述
修改一下显示的内容,将上面最后两行代码注释,修改为如下代码:

# data_dict = res.json()
# print(data_dict).

# 检查请求是否成功
if res.status_code == 200:
    # 解析返回的 JSON 数据
    result = res.json()
    
    # 提取 response 字段
    generated_text = result.get("response", "")
    print("生成的文本:", generated_text)
else:
    print("请求失败,状态码:", res.status_code)
    print("错误信息:", res.text)

这样得到的文本可视化非常好看了:
在这里插入图片描述

实现多轮对话并保留对话的记忆

在这个里面模型不会记录我们之前说的话,所以现在修改一下代码让他可以实现多轮对话,原理就是把之前交流的信息保存在一个list中,然后可以手动输入下一个问题,

  1. 首先修改使用的API,多轮对话要使用chatapi

    url = "http://localhost:11434/api/chat"
    
  2. 然后创建一个list用于保存对话.

    # 保存对话记录的list
    msg_list = []
    
  3. 写一个while的死循环,然后让用户输入文本,输入完成后将消息保存到对话记录中,然后再将返回结果也保存到列表中,这样就将之前的记录保存起来了.

    # -*- coding: utf-8 -*-
    import requests
    
    # 保存对话记录的list
    msg_list = []
    
    # Ollama API 的 URL
    url = "http://localhost:11434/api/chat"
    
    while True:
        text = input("请输入:")
        user_dict = {"role":"user","content":text}
        msg_list.append(user_dict)
        res = requests.post(
            url=url,
            json={
                "model":"deepseek-r1:8b",
                "messages":msg_list,
                "stream":False
            }
        )
    
    
        # data_dict = res.json()
        # print(data_dict)
    
    
        # 检查请求是否成功
        if res.status_code == 200:
            # 解析返回的 JSON 数据
            result = res.json()
        
            # 提取 response 字段
            generated_text = result.get("message", "")
            # 保存返回的文本
            msg_list.append(generated_text)
    
            print("生成的文本:", generated_text["content"])
        else:
            print("请求失败,状态码:", res.status_code)
            print("错误信息:", res.text)
    

    这样就可以连续对话了,
    在这里插入图片描述
    到这里就实现了使用代码来调用了.

http://www.dtcms.com/a/31735.html

相关文章:

  • 【量化科普】Liquidity,流动性
  • 鸟语林-论坛系统自动化测试
  • 【网络安全 | 漏洞挖掘】账户接管+PII+原漏洞绕过
  • 【语音科学计算器】当前汇率
  • Python简单使用MinerU
  • 学习Linux准备2
  • 深入理解设计模式之解释器模式
  • 如何设计app测试用例
  • Docker下的Elastic search
  • 使用 LS-DYNA 光滑粒子流体动力学 (SPH) 进行搅拌摩擦焊接
  • 【CXX】3 其它Rust与C++互操作工具详解
  • 网页请求腾讯云环境的云函数
  • 【算法】直接插入排序、折半插入排序、希尔排序
  • 【JAVA】封装多线程实现
  • 【WebGL】fbo双pass案例
  • 《AI与NLP:开启元宇宙社交互动新纪元》
  • ue5地面上出现preview字样
  • 服务可用性评价指标
  • 第二届粤港澳大湾区数字经济与人工智能国际学术会议(DEAI 2025)
  • C++ MFC添加RichEditControl控件后,程序启动失败
  • 从零搭建微服务项目Pro(第1-1章——Quartz实现定时任务模块)
  • C++:std::thread、条件变量与信号量
  • 【网络】高级IO——Reactor版TCP服务器
  • 【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(5-7)
  • 【JT/T 808协议】808 协议开发笔记 ② ( 终端注册 | 终端注册应答 | 字符编码转换网站 )
  • MongoDB应用设计调优
  • 【Leetcode 每日一题 - 扩展】1512. 好数对的数目
  • 鸿蒙NEXT应用App测试-专项测试(DevEco Testing)
  • 【Elasticsearch】同一台服务器部署集群
  • Java IO 设计模式总结