首页 > Python资料 博客日记
python调用ollama库详解
2024-10-12 14:00:08Python资料围观46次
这篇文章介绍了python调用ollama库详解,分享给大家做个参考,收藏Python资料网收获更多编程知识
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_keep | 5 | 保留的上下文数量。 |
seed | 42 | 随机数生成器的种子,用于控制随机性。 |
num_predict | -1 | 预测的单词数量。(此处已修改,原先的默认值100是不对的!) |
top_k | 20 | 从概率分布中选择最高概率的前k个候选项。 |
top_p | 0.9 | 从概率分布中选择累积概率达到阈值p的候选项。 |
min_p | 0.0 | 最低概率阈值,低于此阈值的候选项将被忽略。 |
tfs_z | 0.5 | 温度缩放因子,用于调整概率分布的形状。 |
typical_p | 0.7 | 典型性惩罚系数,用于调整概率分布的形状。 |
repeat_last_n | 33 | 重复最后n个词的概率。 |
temperature | 0.8 | 温度参数,用于调整概率分布的形状。 |
repeat_penalty | 1.2 | 重复惩罚系数,用于调整重复词的概率。 |
presence_penalty | 1.5 | 存在惩罚系数,用于调整已出现的词的概率。 |
frequency_penalty | 1.0 | 频率惩罚系数,用于调整频繁出现的词的概率。 |
mirostat | 1 | Mirostat算法的启用状态(0表示禁用,1表示启用)。 |
mirostat_tau | 0.8 | Mirostat算法的温度参数。 |
mirostat_eta | 0.6 | Mirostat算法的学习率参数。 |
penalize_newline | True | 是否对换行符进行惩罚。 |
stop | [" ", "user:"] | 停止生成的条件列表。 |
numa | False | 是否启用NUMA(非一致性内存访问)优化。 |
num_ctx | 1024 | 上下文的最大长度。 |
num_batch | 2 | 批处理大小。 |
num_gpu | 1 | 使用的GPU数量。 |
main_gpu | 0 | 主GPU的索引。 |
low_vram | False | 是否启用低显存模式。 |
f16_kv | True | 是否使用半精度浮点数存储键值对。 |
vocab_only | False | 是否仅加载词汇表,不加载模型权重。 |
use_mmap | True | 是否使用内存映射文件。 |
use_mlock | False | 是否锁定内存以防止交换。 |
num_thread | 8 | 使用的线程数量。 |
20240829:
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)
制作不易,感谢大家的支持!
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj