crewAI中通过Ollama调用本地模型的两种方式

0 背景

crewAI中默认使用的gpt4的模型, 在环境中配置OPENAI_API_KEY即可使用。 但openai的api毕竟是要花钱的, 况且现在对大陆地区做了封禁, 使用起来不是那么方便。 而Ollama可以方便的运行本地的大模型, 既不用花钱, 又可以在本地进行使用。 crewAI中也支持Ollama使用本地模型。

1 使用方式

import os##默认方式,直接使用gpt4, 需要设置OPENAI_API_KEY
# os.environ["OPENAI_API_KEY"] = "Your Key"###通过Ollama使用本地模型的方式1:
os.environ["OPENAI_API_BASE"] = 'http://localhost:11434/v1'  ## 这里如果填http://localhost:11434 会报404错误
os.environ["OPENAI_MODEL_NAME"] ='llama3:8b'  # Adjust based on available model
os.environ["OPENAI_API_KEY"] ='NA'
# ####################################### # ###通过Ollama使用本地模型的方式2:
# from langchain.llms import Ollama
#
# llm = Ollama(
#     model="llama3:8b",
#     base_url="http://localhost:11434/")  ##不给base_url参数也可以。如果给的话这里写http://localhost:11434/v1 会报错,提示langchain_community.llms.ollama.OllamaEndpointNotFoundError: Ollama call failed with status code 404. Maybe your model is not found and you should pull the model with `ollama pull llama3:8b`.
# ##############################from crewai import Agent, Task, Crewresearch_agent = Agent(role='Researcher',goal='Find and summarize the latest AI news',backstory="""You're a researcher at a large company.You're responsible for analyzing data and providing insightsto the business.""",verbose=True,# llm=llm    ### 注意使用方式2时, 这里需要手动传入llm
)task = Task(description='Find and summarize the latest AI news',expected_output='A bullet list summary of the top 5 most important AI news',agent=research_agent,tools=[]
)crew = Crew(agents=[research_agent],tasks=[task],verbose=2
)result = crew.kickoff()
print(result)

上面的代码给出了2种不同的使用Ollama的方式,
第一种方式是与openai api使用方式兼容的一种方式, 直接设置OPENAI_API_BASEOPENAI_MODEL_NAMEOPENAI_API_KEY即可。OPENAI_API_BASE填Ollama服务的本地地址和端口。 注意,此时虽然没用用openai 的api, 但是OPENAI_API_KEY也是必不可少的, 可以随便给个值。
第二种方式是显式的用Ollama定义模型, 然后在agent中手动传入llm参数, 注意base_url的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图文讲解IDEA如何导入JDBC驱动包

前言 学习JDBC编程,势必要学会如何导入驱动包,这里笔者用图文的方式来介绍 视频版本在这里 50秒教你怎么导入驱动包然后进行JDBC编程的学习_哔哩哔哩_bilibili 忘记录音频了,大伙凑合着看 下载驱动包 https://mvnrepository.com/artifact/mysql/mysql-connector-java 去中…

GB28181设备如何添加

简介 此篇描述视频网关(中间件)接入大华、海康、ONVIF设备(NVR、摄像头)、GB28181设备步骤和流程。 阅读本文档之前建议先阅览视频网关(中间件)用户使用手册。 接入方式和说明 视频网关(中间…

Flutter——最详细(GestureDetector)使用教程

背景 组件手势检测,单击、双击、长按、松开、移动、横向拖动、竖向拖动等事件 属性作用onTap单击onDoubleTap双击onLongPress长按onPanUpdate拖动实时更新onHorizontalDragDown横向点击onVerticalDragDown竖向点击 GestureDetector(onTap: () > setState(() >…

论文学习_Getafix: learning to fix bugs automatically

1. 引言 研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要…

ZP-UHZ系列顶装式磁翻板液位计

一、用途及特点 ZP-UHZ系列磁浮子液位计是一种能就地指示或远传显示与控制的物位仪表,它广泛用于石油、化工、轻工、电力、核工业以及食品、医药等工业中,对各种塔、罐、槽、箱等容器中介质的液位进行指示和控制。 ZP-UHZ系列磁浮子液位计的指示部分及发…

jmeter-beanshell学习7-props获取全局变量和设置全局变量

继续写点不痛不痒的小东西。第一篇写了vars设置变量,但是vars只能作用在同一个线程组。跨线程组情况比较少,要是用到跨线程组,有个pros,用法和vars一样。 在setup线程组设置变量a,执行的时候,jmeter会先执行…

第二证券:转股溢价率是什么意思?高好还是低好?

转股溢价率是指可转债在商场上的交易价格相对于其转股价值的溢价份额,能够用来衡量投资者为取得将债券转换为股票权力而付出的额定金额,是可转债的重要指标。 转股溢价率的核算公式为:溢价率=(转债价格-转股价值&…

MySql性能调优01-[数据结构和索引]

数据结构和索引 什么是索引索引的种类常见索引数据结构和区别二叉树 红黑树 什么是索引 索引的种类 在Mysql中索引是在存储引擎层实现的,而不是在服务层实现的 按数据结构分:Btree索引、Hash索引、Full-text索引按存储结构分:聚簇索引、非聚…

【Python百日进阶-Web开发-Peewee】Day296 - 查询示例(五)聚合2、递归

文章目录 14.6.13 列出每个指定设施的预订总小时数 List the total hours booked per named facility14.6.14 列出每位会员在 2012 年 9 月 1 日之后的首次预订 List each member’s first booking after September 1st 201214.6.15 生成成员名称列表,每行包含成员总数 Produc…

闲话银行家舍入法,以及在程序中如何实现

前言 相信对于四舍五入的舍入法,大家都耳熟能详,但对于银行家舍入法,可能就会比较少接触了! 可是在金融界,银行家舍入法可是大名鼎鼎的主角之一,主要应用于金融领域和涉及货币计算的场合。 那么&#xf…

异步轮询 Web API 的实现与 C# 示例

在现代软件开发中,异步轮询 Web API 是一种常见的做法,尤其是在需要定期从服务器获取数据更新的场景下。C# 作为一种功能强大的编程语言,提供了丰富的异步编程支持,使得实现异步轮询变得相对简单。本文将介绍如何使用 C# 快速实现…

Google Guava Cache简介

目录 简介和Redis的区别 简介 Google Guava 是一个开源的 Java 库,其中提供了一系列强大的工具来简化 Java 开发工作。其中,Guava Cache 组件提供了一个内存缓存的实现,可以显著提高应用程序的性能。这是一个高效且灵活的缓存解决方案&#…

conda 创建新的虚拟环境报错

conda 创建新的虚拟环境报错 CorruptedEnvironmentError: The target environment has been corrupted. Corrupted environments most commonly occur when the conda process is force-terminated while in an unlink-link transaction. 把错误的文件删除如A.json 再重新运行…

JavaWeb-js(4)

js事件 在前端页面中,js程序大多数是由事件来驱动的,当触发某些事件的时候,可以使用js负责响应。 js事件由三部分组成: 事件源——》指的是被触发的对象; 事件类型——》如何触发的事件,如:鼠标单击、双击、键盘操作等;…

钓鱼网站制作-克隆163企业邮箱

这里克隆163企业邮箱比较费劲,和之前的还不一样,这个克隆的目录比较多,发现好多工具都克隆不全,要不就是缺少图片要不就是缺少功能 首先效果 可以看到成功记录账户密码,接下来再来伪装到域名 这里克隆网站使用神器 …

stm32使用单通道规则组ADC

Driver_ADC.c 如果需要关闭adc转换,只需要设置CNT,将其置为0,后面再转换一次就停止了。 #include "Driver_ADC.h"void Driver_ADC1_Init(void) {/* 1. 时钟配置 *//* 1.1 adc时钟 */RCC->APB2ENR | RCC_APB2ENR_ADC1EN;RCC-&g…

bev 之 fastBEV

前面我们提到bev 之 LSS, 知道视觉的BEV方案的主要痛点在于: 1、depth 的预测 2、图像特征到BEV特征之间的视图变换消耗大量计算 LSS 为什么需要D维深度 占据大量消耗的原因是LSS 对每个图像特征点引入深度D,即假设每个像素上存在可能的D维深度。也就是假设不同像…

ubuntu18虚拟机克隆后不能上网和磁盘损坏问题

小学期直接给学弟学妹们自己配好的克隆的虚拟机,结果出现了这两种问题,参考了网上好多资料,太多了忘了存了,花了好久的时间才解决,这里记录一下。 磁盘损坏问题: 网络无法连同问题,ip addr发现…

特征融合篇 | YOLOv10改进之在Neck网络中添加加权双向特征金字塔BiFPN

前言:Hello大家好,我是小哥谈。在计算机视觉任务中,特征金字塔网络(FPN)是一种常用的方法,它通过构建不同尺度的特征图来捕获不同尺度的目标。然而,传统的FPN存在一些缺点,如特征融合…

解锁Postman的API参数化:动态请求的秘诀

🔑 解锁Postman的API参数化:动态请求的秘诀 在API测试的世界里,参数化是构建灵活、可重用请求的关键。Postman作为API开发和测试的领军工具,提供了强大的参数化功能,允许用户创建动态、个性化的API请求。本文将深入探…