MetaGPT入门(一)

本文介绍了在Windows11系统中,如何通过Anaconda创建虚拟环境、安装metagpt及其国内API,以及使用WriteSimpleCode类实现基础编程任务的详细步骤。作者分享了配置过程和一个示例代码,尽管遇到了一些小问题,但最终成功完成了练习。
部署运行你感兴趣的模型镜像

本文在Win11操作系统下进行,工具pycharm

一、环境准备

1.建议使用conda虚拟环境

安装anaconda参考:Windows10下Anaconda的安装_windows anaconda 路径-优快云博客

打开Anaconda Powershell Prompt命令窗口,输入下面命令,创建3.10版本的python解释器

conda create -n metagpt python=3.10

2.切换到创建的metagpt虚拟环境

conda activate metagpt

3.安装metagpt,输入下面命令,以指定源形式,安装特定版本的metagpt

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple metagpt==0.5.2

4、配置metagpt

没有openai,练习用,国内api也行啊,用智谱的吧,一个月 有效,够练习的了

https://open.bigmodel.cn/usercenter/resourcepack

智谱AI开放平台 (bigmodel.cn)

修改key.yaml文件ZHIPUAI_API_KEY:

5、开始练习吧,按照第3章,编写实现一个单动作Agent

‌⁡⁣⁡⁡​​⁤‌⁡‌​⁡‍⁡​⁣⁤‬​⁣‍⁢​‬⁣⁣⁣​‬⁣‌⁢​​‌​⁤‬⁢‍‬‍《MetaGPT智能体开发入门》教程 - 飞书云文档 (feishu.cn)

代码如下

import re
import asyncio
from metagpt.actions import Action

class WriteSimpleCode(Action):

    PROMPT_TEMPLATE = ''' 
    Write a python function that can {instruction} and provide two runnable test cases.
    Return ```python your_code_here ``` with NO other texts,
    your code:
    '''

    def __init__(self,name:'WriteSimpleCode',context=None, llm=None):
        super().__init__(name,context,llm)

    async def run(self, instruction:str):

        prompt = self.PROMPT_TEMPLATE.format(instruction=instruction)
        rsp = await self._aask(prompt)

        code_text = WriteSimpleCode.parse_code(rsp)
        return code_text

    @classmethod
    def parse_code(rsp):
        pattern = r'"""python(.*)"""'
        match = re.match(pattern,rsp,re.DOTALL)
        code_text = match.group(1) if match else rsp
        return code_text

if __name__ == '__main__':
    # 创建 WriteSimpleCode 类的实例
    action = WriteSimpleCode(name='WriteSimpleCode', context=None, llm=None)

    # 调用 run 方法,传入指令参数
    instruction = 'reverse_string'
    # 使用 await 调用 run 方法,传入指令参数
    code_text = asyncio.run(action.run(instruction))

    # 打印提取出的 Python 代码
    print(code_text)
   

代码含义见上面开发文档

虽然报错了,但是运行成功了

资源消耗情况

数量正好对上,本次练习完成,接着练习其他的吧!!!

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

<think> 我们参考MetaGPT的文档和示例,来构建个简单的智能体小项目。根据引用[2],我们可以通过MetaGPT框架创建智能体。以下是入门级的步骤: ### 步骤1: 环境准备 1. 安装MetaGPT: ```bash pip install metagpt ``` 2. 设置OPENAI_API_KEY(或其他LLM API密钥)环境变量。 ### 步骤2: 编写个简单的智能体 我们创建个智能体,它可以执行个简单的任务,比如根据用户输入生成个问候。 ```python from metagpt.actions import Action from metagpt.roles import Role from metagpt.schema import Message # 定义个动作(Action) class Greeting(Action): """生成问候语的动作""" async def run(self, message: str) -> str: return f"Hello, {message}!" # 定义个角色(Role),它使用上面的动作 class Greeter(Role): name: str = "Alice" profile: str = "Greeter" def __init__(self, **kwargs): super().__init__(**kwargs) self.set_actions([Greeting]) async def _act(self) -> Message: # 从记忆中获取最新的条用户消息 msg = self.rc.memory.get()[-1].content # 执行动作 greeting = await self.rc.todo.run(msg) # 创建消息 msg = Message(content=greeting, role=self.profile, cause_by=type(self.rc.todo)) return msg # 运行角色 async def main(): msg = "World" role = Greeter() result = await role.run(msg) print(result.content) # 输出: Hello, World! if __name__ == "__main__": import asyncio asyncio.run(main()) ``` ### 步骤3: 运行智能体 运行上述代码,智能体会对输入的消息(例如"World")生成问候语"Hello, World!"。 ### 解释 1. **Action**: 定义了个动作`Greeting`,它接收个字符串,返回问候语。 2. **Role**: 定义了个角色`Greeter`,它设置了个默认动作`Greeting`。在运行时,它会从记忆中获取消息,然后执行动作。 3. **运行**: 通过`role.run(msg)`触发角色的运行,角色会执行动作并返回结果。 这是个非常简单的智能体,展示了MetaGPT的基本组件:动作(Action)和角色(Role)。 ### 进阶 根据引用[3],我们可以构建更复杂的多智能体系统,例如辩论智能体。但作为简单小项目,上述示例已经足够。 ### 注意事项 - 确保已设置正确的API密钥(如OPENAI_API_KEY),因为MetaGPT内部调用LLM时需要使用(虽然本例中没有使用LLM,但框架默认会使用)。 - 如果不想使用LLM,可以配置使用本地模型或其他模型,具体参考MetaGPT文档。 §§相关问题§§ 1. MetaGPT中如何配置使用本地大模型? 2. 如何让多个智能体协作完成个任务? 3. MetaGPT框架中Role和Action的关系是什么? </think> ### 使用MetaGPT实现智能体简单小项目的方法 我将通过个**天气查询智能体**的完整案例,分步演示如何使用MetaGPT构建简单项目。这个智能体能接收用户位置输入,调用天气API返回实时天气信息[^1][^2]。 --- ### 第步:环境准备 ```bash # 安装MetaGPT pip install metagpt # 设置OpenAI API密钥(或其他LLM服务) export OPENAI_API_KEY=your_key_here ``` --- ### 第二步:创建智能体核心组件 #### 1. 定义天气查询动作(Action) ```python from metagpt.actions import Action import requests class GetWeather(Action): """调用天气API获取实时数据""" async def run(self, location: str): API_URL = f"https://api.weatherapi.com/v1/current.json?key=YOUR_KEY&q={location}" response = requests.get(API_URL) data = response.json() return f""" {location}当前天气: 🌡️ 温度: {data['current']['temp_c']}°C 💧 湿度: {data['current']['humidity']}% 💨 风速: {data['current']['wind_kph']}km/h """ ``` #### 2. 定义智能体角色(Role) ```python from metagpt.roles import Role class WeatherAgent(Role): name: str = "气象员小智" profile: str = "天气查询助手" def __init__(self, **kwargs): super().__init__(**kwargs) self.set_actions([GetWeather]) # 绑定动作 async def _act(self) -> str: msg = self.rc.memory.get()[-1] # 获取最新用户消息 location = msg.content weather = await GetWeather().run(location) return weather ``` --- ### 第三步:运行智能体 ```python async def main(): agent = WeatherAgent() result = await agent.run("北京") print(result) # 输出示例: # 北京当前天气: # 🌡️ 温度: 28°C # 💧 湿度: 65% # 💨 风速: 12km/h ``` --- ### 第四步:扩展功能(可选) 添加异常处理增强健壮性: ```python class GetWeather(Action): async def run(self, location: str): try: # ...API调用代码... except Exception as e: return f"⚠️ 查询失败: {str(e)}" ``` --- ### 项目结构说明 | 组件 | 作用 | 示例 | |------------|-------------------------------|-----------------------| | **Role** | 智能体身份定义 | `WeatherAgent` | | **Action** | 具体执行单元 | `GetWeather` | | **Memory** | 存储对话历史 | `self.rc.memory` | --- ### 调试技巧 1. 使用日志查看执行流程: ```python from metagpt.logs import logger logger.info("正在查询天气...") ``` 2. 测试不同输入: ```python await agent.run("上海") await agent.run("InvalidCityName") ``` > 提示:完整代码示例可在[MetaGPT官方GitHub](https://github.com/geekan/MetaGPT)的`examples`目录找到更多参考[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值