当前位置: 首页 > article >正文

autogen-agentchat 0.4.0.dev8版本的安装

1. 安装命令

pip install autogen-agentchat==0.4.0.dev8 autogen-ext[openai]==0.4.0.dev8

2. 版本检查

import autogen_agentchat
print(autogen_agentchat.__version__)
0.4.0.dev8
import autogen_ext
print(autogen_ext.__version__)

0.4.0.dev8

3. 第一个案例

使用 autogen-agentchat 创建一个智能代理系统,其中代理通过 智谱chatglm 模型处理用户查询(在本例中是查询天气),并使用定义的工具(如 get_weather)来返回结果。代理团队的任务是轮流响应查询,直到满足终止条件。

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.task import Console, TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models import OpenAIChatCompletionClient

# Define a tool
async def get_weather(city: str) -> str:
    return f"The weather in {city} is 73 degrees and Sunny."


async def main() -> None:
    # Define an agent
    weather_agent = AssistantAgent(
        name="weather_agent",
        model_client=OpenAIChatCompletionClient(
            model="GLM-4-Plus",
            api_key="your api key",
            base_url="https://open.bigmodel.cn/api/paas/v4/",
            model_capabilities={
                "vision": True,
                "function_calling": True,
                "json_output": True,
            },
        ),
        tools=[get_weather],
    )

    # Define termination condition
    termination = TextMentionTermination("TERMINATE")

    # Define a team
    agent_team = RoundRobinGroupChat([weather_agent], termination_condition=termination)

    # Run the team and stream messages to the console
    stream = agent_team.run_stream(task="What is the weather in New York?")
    await Console(stream)

await main()
---------- user ----------
What is the weather in New York?
---------- weather_agent ----------
[FunctionCall(id='call_-9186124499374425060', arguments='{"city": "New York"}', name='get_weather')]
[Prompt tokens: 141, Completion tokens: 11]
---------- weather_agent ----------
[FunctionExecutionResult(content='The weather in New York is 73 degrees and Sunny.', call_id='call_-9186124499374425060')]
---------- weather_agent ----------
The weather in New York is 73 degrees and Sunny. TERMINATE
[Prompt tokens: 166, Completion tokens: 16]
---------- Summary ----------
Number of messages: 4
Finish reason: Text 'TERMINATE' mentioned
Total prompt tokens: 307
Total completion tokens: 27
Duration: 1.82 seconds

4. 出现的错误:

4.1 安装出错

C:\Users\32564>pip install 'autogen-agentchat==0.4.0.dev8' 'autogen-ext[openai]==0.4.0.dev8'
ERROR: Invalid requirement: "'autogen-agentchat==0.4.0.dev8'": Expected package name at the start of dependency specifier
    'autogen-agentchat==0.4.0.dev8'

这个问题是由于在 pip install 命令中使用了单引号 ’ 导致的。Windows 命令行(cmd)不正确地解析了这些单引号,将其作为字符串的一部分,而不是用作命令的分隔符。

解决方法
在 Windows 上,请使用双引号 " 或直接省略引号:

替换单引号为双引号:

pip install "autogen-agentchat==0.4.0.dev8" "autogen-ext[openai]==0.4.0.dev8"

或者直接省略引号:

pip install autogen-agentchat==0.4.0.dev8 autogen-ext[openai]==0.4.0.dev8

为什么会报错?
在 Linux 和 macOS 上,单引号(')可以用来包裹参数,而在 Windows 的 cmd 中,单引号不会被解释为参数的边界,而是被当作字符的一部分。
因此,‘autogen-agentchat==0.4.0.dev8’ 被视为整个参数,而不是包名和版本号的组合。

4.2 asyncio.run() 在jupyter notebook中运行出错

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[3], line 34
     31     stream = agent_team.run_stream(task="What is the weather in New York?")
     32     await Console(stream)
---> 34 asyncio.run(main())

File d:\soft\anaconda\envs\auto_four\Lib\asyncio\runners.py:190, in run(main, debug, loop_factory)
    161 """Execute the coroutine and return the result.
    162 
    163 This function runs the passed coroutine, taking care of
   (...)
    186     asyncio.run(main())
    187 """
    188 if events._get_running_loop() is not None:
    189     # fail fast with short traceback
--> 190     raise RuntimeError(
    191         "asyncio.run() cannot be called from a running event loop")
    193 with Runner(debug=debug, loop_factory=loop_factory) as runner:
    194     return runner.run(main)

这个错误 RuntimeError: asyncio.run() cannot be called from a running event loop 表示你在已经运行的事件循环中尝试调用 asyncio.run(),而 asyncio.run() 只能在没有其他事件循环正在运行的情况下调用。

为什么会报这个错?
asyncio.run() 是用于启动一个新的事件循环并运行一个异步任务的函数。它不能在已经有事件循环运行的环境中调用。常见的情况是在 Jupyter Notebook 或某些框架(如 Gradio、FastAPI 等)中,这些环境本身就已经有一个事件循环在运行,导致你不能再使用 asyncio.run()。

解决方法
方法 1: 使用 await 代替 asyncio.run()
在 Jupyter Notebook 中或者在已经有事件循环的环境中,你应该直接 await 异步函数,而不是使用 asyncio.run()。比如:

# 原来你可能这样做:
# asyncio.run(main())

应该改为:

await main()

参考链接:https://github.com/microsoft/autogen/tree/main
如果有任何问题,欢迎在评论区提问。


http://www.kler.cn/a/421133.html

相关文章:

  • 基于 MVC 架构的 SpringBoot 高校行政事务管理系统:设计优化与实现验证
  • vue2+cesium初始化地图
  • Python的秘密基地--[章节2]Python核心数据结构
  • [NOIP2015 提高组] 神奇的幻方
  • android-studio开发第一个项目,并在设备上调试
  • Delphi 12.2.1 idhttpserver的使用方法
  • HarmonyOS开发:关于签名信息配置详解
  • 【系统架构设计师】真题论文: 论软件质量保证及其应用(包括解题思路和素材)
  • Chromium网络调试篇-Fiddler 5.21.0 使用指南:捕获浏览器HTTP(S)流量(二)
  • CPU渲染和GPU渲染各自特点,优势,场景使用
  • 微信小程序横滑定位元素案例代码
  • 【GPT】代谢概念解读
  • uni-app打包为安卓APP的权限配置问题探索
  • 高效数据分析:五款报表工具助力企业智能决策
  • Spring Boot 启动流程详解
  • CSS定位技术详解:从基础到高级应用
  • koa中间件
  • AcWing 841. 字符串哈希
  • 深入探索进程间通信:System V IPC的机制与应用
  • PLC协议
  • eBPF:现代Linux的强大内核扩展技术
  • docker搭建umami
  • PHM技术:一维信号时序全特征分析(统计域/频域/时域)| 信号处理
  • 【机器人】01 强化学习、模仿学习和运动规划 仿真平台ISAAC Lab安装与使用
  • 代码随想录-算法训练营day31(贪心算法01:分发饼干,摆动序列,最大子数组和)
  • 【CUDA】Kernel Atomic Stream