Agent Ⅱ 手搓一个Agent feat. Qwen-Agent
前言 上一篇文章介绍了关于Agent的一些相关内容,这篇文章来动手实现一个Agent。目前比较流行的Agent开发框架有很多,比如可视化的字节的扣子,还有代码实现的babyagi、AutoGPT,因为我用qwen用的比较多,正好我最近看到qwen也开源了一套框架,qwen-agents,封装了工具、助手和一些规划的方法,使用起来比较方便,那就用这套框架实现一个简单的Agent。 Agent设计开发 既然是Agent,那就让他做一个LLM不能直接实现的任务,我这边有一个北京的房价表格,我们可以让Agent帮我们分析一下房价,最后生成一个图标来展示每平米的价格。 因为这个任务需要多步骤才能实现,所以我们可以使用上篇文章中将的ReAct的思路,让模型自己规划任务,根据每一次的执行结果来调整任务,并且可以利用代码助手来帮助他实现目标。 先配置LLM,这里可以使用阿里的api,也可以使用第三方的api,只要与openAI库兼容就可以。我这里尝试了付费的qwen-max和免费的Qwen2-7B-Instruct。 llm_cfg = { # 使用 DashScope 提供的模型服务: # 'model': 'qwen-max', # 'model_server': 'dashscope', # 'api_key': 'EMPTY', # 如果这里没有设置 'api_key',它将读取 `DASHSCOPE_API_KEY` 环境变量。 # 使用与 OpenAI API 兼容的模型服务,例如 vLLM 或 Ollama: 'model': 'alibaba/Qwen2-7B-Instruct', 'model_server': 'http://localhost:8000/v1', # base_url,也称为 api_base 'api_key': 'EMPTY', # (可选) LLM 的超参数: 'generate_cfg': { 'top_p': 0.8 } } 然后去定义我们的Agent,因为框架封装的很方便了,所以几行代码就可以实现。 可以看到我们只需要配置Agent能够使用的工具,以及Agent的名称,他能做什么就可以了。工具方面我这边只使用了代码解释器,框架还封装了很多其他的工具,比如联网搜索、图片生成(需要api支持)、RAG等。框架也支持自定义工具,可以根据自己的需要实现特定功能的工具。 def init_agent_service(): llm_cfg = { } tools = ['code_interpreter'] bot = agents.ReActChat(llm=llm_cfg, name='house price analyzer', description='You are a house price analyzer, you can run code to analyze house price.', function_list=tools) return bot 然后就可以配置测试的方法了,可以通过命令行进行测试,也可以通过GUI进行测试,框架基于gradio开发了很方便的GUI方法,我就选择GUI来进行测试。 ...