首页 > 编程语言 >python调用ollama库详解

python调用ollama库详解

时间:2024-08-26 12:57:21浏览次数:18  
标签:输出 python back 流式 详解 eval duration ollama

0 准备

1)准备Ollama软件(注意:两个不是同一个东西)

详见上次的文章 Ollama通过gguf文件加载AI模型(补充:关于Ollama加载AI模型的补充

2)准备ollama库

如果您还未安装ollama库,请使用pip安装:

pip install ollama

#1 ollama库的基本使用

import ollama

# 普通输出(请先按照准备工作中的要求安装模型)
back = ollama.chat(model="你的模型名称",messages=[{"role": "user","content": "生成一句简短的话"}],
                   stream = False, # 是否流式输出)
print(back)

#流式输出
back = ollama.chat(model="你的模型名称",messages=[{"role": "user","content": "生成一句简短的话"}],
                   stream = True, # 是否流式输出)
for i in back:
    print(back,end = "")

#2 ollama库的进阶使用

1)options参数设置

import ollama
back = ollama.chat(model="你的模型名称",messages=[{"role": "user","content": "生成一句简短的话"}],
                   options = {"temperature":1145141919810, # 模型温度
                              "num_ctx":4096               # 返回的最大token数
                             } # ...
                   stream = True, # 是否流式输出)
for i in back:
    print(back,end = "")
参数默认值解释
num_keep5保留的上下文数量。
seed42随机数生成器的种子,用于控制随机性。
num_predict100预测的单词数量。
top_k20从概率分布中选择最高概率的前k个候选项。
top_p0.9从概率分布中选择累积概率达到阈值p的候选项。
min_p0.0最低概率阈值,低于此阈值的候选项将被忽略。
tfs_z0.5温度缩放因子,用于调整概率分布的形状。
typical_p0.7典型性惩罚系数,用于调整概率分布的形状。
repeat_last_n33重复最后n个词的概率。
temperature0.8温度参数,用于调整概率分布的形状。
repeat_penalty1.2重复惩罚系数,用于调整重复词的概率。
presence_penalty1.5存在惩罚系数,用于调整已出现的词的概率。
frequency_penalty1.0频率惩罚系数,用于调整频繁出现的词的概率。
mirostat1Mirostat算法的启用状态(0表示禁用,1表示启用)。
mirostat_tau0.8Mirostat算法的温度参数。
mirostat_eta0.6Mirostat算法的学习率参数。
penalize_newlineTrue是否对换行符进行惩罚。
stop[" ", "user:"]停止生成的条件列表。
numaFalse是否启用NUMA(非一致性内存访问)优化。
num_ctx1024上下文的最大长度。
num_batch2批处理大小。
num_gpu1使用的GPU数量。
main_gpu0主GPU的索引。
low_vramFalse是否启用低显存模式。
f16_kvTrue是否使用半精度浮点数存储键值对。
vocab_onlyFalse是否仅加载词汇表,不加载模型权重。
use_mmapTrue是否使用内存映射文件。
use_mlockFalse是否锁定内存以防止交换。
num_thread8使用的线程数量。

2)返回的json对象处理

返回的json对象在没有问题的情况下应该是类似这种结构的:

1.无流式输出:
{
  "model": "qwen_q2",
  "created_at": "2024-08-26T04:36:19.6943135Z",
  "response": "请问你有什么需要帮助的吗?",
  "done": true,
  "context": [1, 2, 3],
  "total_duration": 5043500667,
  "load_duration": 5025959,
  "prompt_eval_count": 26,
  "prompt_eval_duration": 325953000,
  "eval_count": 290,
  "eval_duration": 4709213000
}
2.流式输出(过程中)
{
 'model': 'qwen_q2', 
 'created_at': '2024-08-26T04:40:30.6774372Z', 
 'message':
         {
          'role': 'assistant',
          'content': '我的'
         }, 
 'done': False
}
3.流式输出(输出完毕的最后一个)
{
  'model': 'qwen_q2',
  'created_at': '2024-08-26T04:44:04.4184675Z', 
  'message': 
            {
             'role': 'assistant', 
             'content': ''
            }, 
  'done_reason': 'stop', 
  'done': True, 
  'total_duration': 13224925100, 
  'load_duration': 298635100, 
  'prompt_eval_count': 16, 
  'prompt_eval_duration': 4843681000, 
  'eval_count': 11, 
  'eval_duration': 8048190000
}

可以根据"done"的内容判断输出是否完成。

流式输出时可以在每次获得输出时记录时间,以计算实时响应速度。

不使用流式输出和使用流式输出时都可以在输出完毕后通过  'eval_count' 和 'eval_duration' 参数来计算这次对话中的平均响应速度(token/s)


制作不易,感谢大家的支持!

标签:输出,python,back,流式,详解,eval,duration,ollama
From: https://blog.csdn.net/2201_75335496/article/details/141560695

相关文章

  • SparkSQL日期时间模式详解
    datatime使用场景CSV/JSON数据源使用模式字符串来解析和格式化日期时间内容。日期时间函数用于转换StringType类型到DateType或TimestampType类型,反之亦然。例如,unix_timestamp,date_format,to_unix_timestamp,from_unixtime,to_date,to_timestamp,from_utc_timestam......
  • SparkSQL数值模式详解
    简介函数如to_number和to_char确实支持在字符串类型和十进制(数值)类型之间进行转换。这些函数接受格式字符串作为参数,这些格式字符串指示了如何在这两种类型之间映射。to_number:这个函数通常用于将字符串转换成数值类型。你需要提供一个格式字符串来指定如何解释字符串......
  • Python系列(9)- Python 异常处理机制
    1.错误和异常   编程开发时一般会遇到2种类型的错误,分别为语法错误和运行时错误。   语法错误(SyntaxError):Python解释器在解析代码时遇到的错误,比如拼写错误、不符合语法规则等。Python解释器会提示错误的类型和出错的位置,便于开发者及时纠正错误,在错误没有得......
  • MacOS安装 Python 和 PyCharm
    MacOS安装Python3.12.5和PyCharm小阿呜有话说一、MacOS安装PythonPython官网下载二、MacOS安装PyCharmPyCharm官网下载叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!小阿呜有话说前不久换了新电脑,需要重新......
  • Python批量发送邮件如何实现邮件群发策略?
    Python批量发送邮件怎么定制化?如何使用Python发信?Python批量发送邮件已经成为一种不可或缺的工具。Python批量发送邮件都能大大提高效率,节省时间和资源。AokSend将详细介绍如何利用Python批量发送邮件实现高效的邮件群发策略。Python批量发送邮件:设置环境要开始Python批量......
  • 【JS逆向百例】携某 testab 参数补环境详解
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......
  • Python画笔案例-012 绘制空心T字
    1、绘制空心T字通过python的turtle库绘制一个空心T字的图案,如下图:2、实现代码 绘制以上空心T字的图案,代码如下:"""空心T字.py"""importturtle#导入海龟模块turtle.pensize(2)#设定海龟画笔粗细为2turtle.setheading(90)......
  • Python画笔案例-013 绘制水墨风格画
    1、绘制水墨风格画通过python的turtle库绘制一个水墨风格画的图案,如下图:2、实现代码 绘制以上水墨风格画图案,代码如下:"""水墨风格画.py"""importturtle#导入海龟模块turtle.penup()#抬笔turtle.goto(-200,-200)#坐......
  • 利用python连接MySQL数据库
    利用python连接MySQL数据库1、准备工作:(1)事先在系统中已经安装好mysql数据库(2)在系统控制台通过pipinstallpymysql,安装python的第三方数据库模块2、利用python连接数据库#导入模块importpymysql#连接数据库conn=pymysql.connect(host="127.0.0.1",user="root",pas......
  • Python time时间格式化
    1、时间戳转换为指定格式日期importtimet=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())print(t)timestamp=time.time()tuple_time=time.localtime(timestamp)print(tuple_time)print(time.strftime("%Y-%m-%d%H:%M:%S",tuple_time)) ......