使用Ollama测试OpenAI的Swarm多智能体编排框架

news/2024/10/24 11:20:24/

Ollama

https://ollama.com/

ollama run qwen2.5

Install

Requires Python 3.10+

pip install git+https://github.com/openai/swarm.git

代码V1

# 导入Swarm和Agent
from swarm import Swarm, Agent
from openai import OpenAI 
# 实例化Swarm客户端
openai_client = OpenAI(base_url='http://192.168.1.100:11434/v1/',api_key='xxx')
client = Swarm(openai_client)# 定义一个函数,用于将对话交接给智能体B
def transfer_to_agent_b():return agent_b# 定义智能体A
agent_a = Agent(name="Agent A",instructions="You are a helpful agent.",functions=[transfer_to_agent_b]
)# 定义智能体B
agent_b = Agent(name="Agent B",#model_override="qwen2.5",instructions="Only speak in Haikus.",
)# 运行Swarm,并传入用户消息
response = client.run(agent=agent_a,model_override="qwen2.5",messages=[{"role": "user", "content": "I want to talk to agent B."}]
)# 打印智能体B的回复
print(response.messages[-1]["content"])
Invisible thread connects,
Voice echoes, B responds now,
Silence brief then words.

代码V2

# 首先,安装Swarm框架(假设您已经在命令行中执行了此步骤)
# pip install git+ssh://git@github.com/openai/swarm.git# 导入Swarm和Agent
from swarm import Swarm, Agent
from openai import OpenAI
# 实例化Swarm客户端
openai_client = OpenAI(base_url='http://192.168.1.100:11434/v1/',api_key='xxx')
client = Swarm(openai_client)# 定义一个函数,用于将对话交接给智能体B
def transfer_to_agent_b():return agent_b# 定义智能体A
agent_a = Agent(name="Agent A",instructions="你是一个乐于助人的智能体。",functions=[transfer_to_agent_b]
)# 定义智能体B
agent_b = Agent(name="Agent B",# model_override="qwen2.5",instructions="只用中文歇后语说话。",
)# 运行Swarm,并传入用户消息
response = client.run(agent=agent_a,model_override="qwen2.5",messages=[{"role": "user", "content": "我想和智能体B对话。"}]
)# 打印智能体B的回复
print(response.messages[-1]["content"])#响应
好的,现在你将与智能体B对话。它是你的助手了,请对其说些什么吧!智能体B:你好呀!准备好了可以开始我们的交流了呢。有什么问题或者想知道的内容尽管问哦。

参考链接:

https://github.com/openai/swarm

https://mp.weixin.qq.com/s/LpHfKX5SUKE19Dh9o9i7Fw


http://www.ppmy.cn/news/1541585.html

相关文章

R语言编程

一、R语言在机器学习中的优势 R语言是一种广泛用于统计分析和数据可视化的编程语言,在机器学习领域也有诸多优势。 丰富的包:R拥有大量专门用于机器学习的包。例如,caret包是一个功能强大的机器学习工具包,它提供了统一的接口来训练和评估多种机器学习模型,如线性回归、决…

游戏推荐业务中基于 sentinel 的动态限流实践

作者:来自 vivo 互联网服务器团队- Gao Meng 本文介绍了一种基于 sentinel 进行二次开发的动态限流解决方案,包括什么是动态限流、为什么需要引入动态限流、以及动态限流的实现原理。 一、背景 1.1 当前的限流方案 随着互联网的发展及业务的增长&…

单片机裸机程序 —— 设计模式

目 录 软件设计模式的用途一、轮询模式二、前后台模式三、时间片模式四、状态机模式 软件设计模式的用途 专业的程序员不会在知道需求后,马上脑热地去敲代码,然后一边调试一边修复bug。好习惯是把前期工作做好再开始敲键盘,比如选定一个合适…

数据库表拆分:水平分表、垂直分表

在数据库设计中,如果单张表的数据量过大,会导致查询很慢,这时候就要考虑对表的拆分,常见拆分方式有两种,水平分表和垂直分表。 水平分表: 数据库水平分表指数据库按照某种算法,常见的有范围法&…

react1816中的setState同步还是异步的深层分析

setState 是 react 中更新 UI 的唯一方法,其内部实现原理如下: 调用 setState 函数时,React 将传入的参数对象加入到组件的更新队列中。React 会调度一次更新(reconciliation),在调度过程中,Re…

《C Primer Plus》中文版第十三章习题

13.10 复习题 1. 下面的程序有什么问题? 答案: 1. 应该把fp声明为文件指针:FILE *fp; 2. 要给fopen函数提供一种模式:fopen_s(&fp, "gelation", "w"); 3. fputs()函数的参数顺序应该反过来。输出字符串应该有一个换行符,提高可读性。…

AListFlutter(手机alist)——一键安装,可在手机/电视上运行并挂载各个网盘

前面提到软路由系统OpenWRT的时候,当时说过可以在OpenWRT里安装alist,然后挂载网盘,这样就可以通过webdav的方式在家庭局域网下的任何设备都可以访问操作这些网盘,摆脱硬盘空间不够的问题。 但alist的官方版本是没有手机版本的&a…

ubuntu 20.4 安装 openssl 3.x

ubuntu 20.4 安装 openssl 3.x ubuntu 20.4 自带了openssl 1.0.2,升级为 openssl 3.x: # 下载 openssl 源代码压缩包 wget https://www.openssl.org/source/openssl-3.0.10.tar.gz# 安装编译包 sudo apt-get install -y g sudo apt-get install -y mak…