首页 > Python资料 博客日记

python调用ollama库详解

2025-01-12 12:00:07Python资料围观18

这篇文章介绍了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":10, # 模型温度
                                                 "num_ctx":4096               # 返回的最大token数
                             } # ...
                   stream = True, # 是否流式输出
                   )
for i in back:
    print(back,end = "")
参数描述值的类型示例用法
mirostat启用 Mirostat 采样以控制困惑度。(默认值:0、0 = 禁用、1 = Mirostat、2 = Mirostat 2.0)intmirostat 0
mirostat_eta影响算法响应生成文本的反馈的速度。较低的学习率将导致较慢的调整,而较高的学习率将使算法的响应速度更快。(默认值:0.1)floatmirostat_eta 0.1
mirostat_tau控制输出的连贯性和多样性之间的平衡。较低的值将导致文本更集中、更连贯。(默认值:5.0)floatmirostat_tau 5.0
num_ctx设置用于生成下一个标记的上下文窗口的大小。(默认值:2048)intnum_ctx 4096
num_gqatransformer 层中 GQA 组的数量。某些模型需要,例如,对于 llama2:70b,它是 8intnum_gqa 1
num_gpu要发送到 GPU 的层数。在 macOS 上,默认为 1 表示启用 Metal 支持,默认为 0 表示禁用。intnum_gpu 50
num_thread设置计算期间要使用的线程数。默认情况下,Ollama 将检测此参数以获得最佳性能。建议将此值设置为系统具有的物理 CPU 内核数(而不是内核的逻辑数)。intnum_thread 8
repeat_last_n设置模型回溯多长时间以防止重复。(默认值:64,0 = 禁用,-1 = num_ctx)intrepeat_last_n 64
repeat_penalty设置对重复项的惩罚强度。较高的值(例如 1.5)将更强烈地惩罚重复,而较低的值(例如 0.9)将更宽松。(默认值:1.1)floatrepeat_penalty 1.1
temperature模型的温度。提高温度会使模型更有创意地回答。(默认值:0.8)floattemperature 0.7
seed设置用于生成的随机数种子。将此设置为特定数字将使模型为同一提示生成相同的文本。(默认值:0)intseed 42
stop设置要使用的停止序列。遇到此模式时,LLM 将停止生成文本并返回。可以通过在模型文件中指定多个单独的参数来设置多个停止模式。stringstop “AI assistant:”
tfs_z无尾采样用于减少输出中可能性较小的标记的影响。较高的值(例如 2.0)将减少更多影响,而值 1.0 将禁用此设置。(默认值:1)floattfs_z 1
num_predict生成文本时要预测的最大令牌数。(默认值:128,-1 = 无限生成,-2 = 填充上下文)intnum_predict 42
top_k降低产生无意义的可能性。较高的值(例如 100)将给出更多样化的答案,而较低的值(例如 10)将更保守。(默认值:40)inttop_k 40
top_p与 top-k 一起使用。较高的值(例如 0.95)将导致文本更加多样化,而较低的值(例如 0.5)将生成更集中和保守的文本。(默认值:0.9)floattop_p 0.9

20240829:

终于找到了官方释义:
docs/modelfile.md 的 ·OLLAMA/OLLAMA - Gitee.com
上面的已经改为了官方释义中的内容(翻译过)

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进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐