找回密码
 会员注册
查看: 36|回复: 0

python调用ollama库详解

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71089
发表于 2024-9-9 21:57:44 | 显示全部楼层 |阅读模式
0准备1)准备Ollama软件(注意:两个不是同一个东西)详见上次的文章 Ollama通过gguf文件加载AI模型(补充:关于Ollama加载AI模型的补充)2)准备ollama库如果您还未安装ollama库,请使用pip安装:pipinstallollama#1ollama库的基本使用importollama#普通输出(请先按照准备工作中的要求安装模型)back=ollama.chat(model="你的模型名称",messages=[{"role":"user","content":"生成一句简短的话"}],stream=False,#是否流式输出)print(back)#流式输出back=ollama.chat(model="你的模型名称",messages=[{"role":"user","content":"生成一句简短的话"}],stream=True,#是否流式输出)foriinback:print(back,end="")#2ollama库的进阶使用1)options参数设置importollamaback=ollama.chat(model="你的模型名称",messages=[{"role":"user","content":"生成一句简短的话"}],options={"temperature":1145141919810,#模型温度"num_ctx":4096#返回的最大token数}#...stream=True,#是否流式输出)foriinback:print(back,end="")参数默认值解释num_keep5保留的上下文数量。seed42随机数生成器的种子,用于控制随机性。num_predict-1预测的单词数量。(此处已修改,原先的默认值100是不对的!)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使用的线程数量。20240829:        终于找到了官方释义:docs/modelfile.md的·OLLAMA/OLLAMA-Gitee.com2)返回的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)制作不易,感谢大家的支持!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 06:02 , Processed in 2.358654 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表