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

wow-agent---task4 MetaGPT初体验

先说坑:

1.使用git clone模式安装metagpt

2.模型尽量使用在线模型或本地高参数模型。

这里使用python3.10.11调试成功

一,安装

安装 | MetaGPT,参考这里的以开发模型进行安装

git clone https://github.com/geekan/MetaGPT.git
cd /your/path/to/MetaGPT
pip install -e .

在下载后的目录中有一个config文件夹,里面有一个config2.yaml的文件,修改并保存,这里使用zhipu的api进行实现,示例

llm:api_type: 'zhipuai'api_key: 'YOUR_API_KEY'model: 'MODEL_NAME'

ollama也是可以的,不过模型参数不高的还是用在线的成功率会高一些。

验证

metagpt --help

出现提示就代表安装成功,记住那个--code-review的命令

二,Hello world

metagpt "制作一个贪吃蛇的游戏" --code-review

一般是在workspace目录下生成,会有个main.py的运行文件,不过这里需要手动安装一下pygame包,运行后这个游戏是可以执行的,目测可以直接用来可以当demo。

三,概念:让大模型具备agent能力,你需要指定动作action,这个动作可以是写教程,做诗,和自己吵架(辩论),OCR处理,网页自动化等。有了动作还需创建角色role,这个角色可以拥有记录,决策,执行动作的能力。role是具有执行action的综合实体---有一定的规划能力,action是role可执行的流程的具化---有胳膊腿可以进行交互。

MetaGPT/metagpt/roles/tutorial_assistant.py at main · geekan/MetaGPT · GitHub

以官网写脚本的例子来看,定义好就可以写执行代码:

import asyncio
from metagpt.logs import logger
from metagpt.roles.tutorial_assistant import TutorialAssistantasync def main():msg = "Python语言教程"role = TutorialAssistant()logger.info(msg)result = await role.run(msg)logger.info(result)
asyncio.run(main())

写好的教程以md格式存储于data目录下,粗看还可以,总体思路是先生成标题,目录,然后在目录里填充内容。

更多示例请查阅

数据分析和可视化 | MetaGPT

ps:windows用户如果装完不生效,可以看下在C:\Users\xxx\.metagpt下是否有config2.yaml文件,默认是这个优先级高。

四,高级应用

1.RAG示例---需要先在config2.yaml中设置嵌入模型,这里使用ollama。

embedding:api_type: "ollama"base_url: "http://xxxxxxx:11434"api_key: "ollama"model: "bge-m3:latest"embed_batch_size: 256dimensions: 128

坑1:运行时报了一堆错,初步判断是版本兼容的问题,这里给出几个关键包的版本,给大家参考下:

llama-index-core==0.12.14
llama-index-llms-openai=0.3.14
pydantic==2.9.2
pydantic-settings=2.7.1

坑2:运行时报“ValueError: Calculated available context size -277 was not non-negative.”,官方解释:需要在llm里配置max_token,比如2048。但我在config2.yaml没找打配置的地方,于是简单粗暴改成这个DEFAULT_CONTEXT_WINDOW = 5000,这个值在constants.py中,有知道怎么设置max_token解决的童鞋欢迎留言指正。

代码没啥难的,就是直接拿来匹配用就可以:

import asynciofrom metagpt.rag.engines import SimpleEngine
from metagpt.const import EXAMPLE_DATA_PATHDOC_PATH = EXAMPLE_DATA_PATH / "./Dify文档.txt"async def main():engine = SimpleEngine.from_docs(input_files=[DOC_PATH])answer = await engine.aquery("Dify是什么")print(answer)if __name__ == "__main__":asyncio.run(main())

结果是可以正确的回答。

2.使用playwright获取网页信息,官网例子

MetaGPT/examples/di/crawl_webpage.py at main · geekan/MetaGPT · GitHub

在这之前要先配置playwright,同样在config2.yaml中定义

browser:engine: "playwright"browser_type: "chromium"

自己改写的例子,验证通过。

from metagpt.roles.di.data_interpreter import DataInterpreterNEWS_BaiDu_REQ = """从百度新闻https://news.baidu.com/获取信息, **注意: 这是一个中文网站**;
下面是一个大致流程, 你会根据每一步的运行结果对当前计划中的任务做出适当调整:
1. 爬取html结构;
2. 找到并打印第一个*`春晚`*关键词后100个字符的html内容;
"""async def main():di = DataInterpreter(tools=["scrape_web_playwright"])await di.run(NEWS_BaiDu_REQ)if __name__ == "__main__":import asyncioasyncio.run(main())

http://www.lryc.cn/news/530348.html

相关文章:

  • MVANet——小范围内捕捉高分辨率细节而在大范围内不损失精度的强大的背景消除模型
  • 94,【2】buuctf web [安洵杯 2019]easy_serialize_php
  • LabVIEW如何有效地进行数据采集?
  • 6 [新一代Github投毒针对网络安全人员钓鱼]
  • 《Origin画百图》之脊线图
  • linux 函数 sem_init () 信号量、sem_destroy()
  • Kafka架构
  • 刷题记录 动态规划-2: 509. 斐波那契数
  • RDP协议详解
  • 设计模式的艺术-观察者模式
  • 【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态
  • Baklib如何优化企业知识管理提升团队协作与创新能力分析
  • Dubbo view
  • 分享刷题过程中有价值的两道题目
  • 蓝桥杯例题六
  • DeepSeek 详细使用教程
  • 《tcp/ip协议详解》,tcp/ip协议详解
  • 游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目
  • 【数据结构】_时间复杂度相关OJ(力扣版)
  • [Java]异常
  • 【C++语言】卡码网语言基础课系列----13. 链表的基础操作I
  • Vue.js组件开发-实现图片浮动效果
  • 自制Windows系统(十一、Windows11GUI)
  • 索罗斯的“反身性”(Reflexivity)理论:市场如何扭曲现实?(中英双语)
  • 力扣257. 二叉树的所有路径(遍历思想解决)
  • 使用朴素贝叶斯对散点数据进行分类
  • 如何实现滑动列表功能
  • 计算机网络一点事(22)
  • C# 语言基础全面解析
  • [原创](Modern C++)现代C++的关键性概念: 流格式化