Type something to search...
使用 Autogen 0.4 构建我自己的概念验证代理

使用 Autogen 0.4 构建我自己的概念验证代理

Autogen 0.4 — 使用代理创建和执行 Python 代码

我的目标是看看我是否可以让代理团队完成我的一些工作,并且我可以将工作委托给代理。目前这只是一个实验。需要更多的工作来创建一个可在生产规模使用的稳定版本。

概述

  • 创建一个由代理执行各种任务的协调
  • 首先创建一个可以由代理执行的 Python 脚本
  • 然后执行脚本并存储输出
  • 基于之前的输出创建预测 Python 代码
  • 执行预测代码并存储输出
  • 使用 autogen 0.4.1 稳定版本进行测试
  • 不是生产就绪代码,仅将其视为概念证明(POC)

需求

  • autogen 0.4.1
  • Azure 订阅
  • Azure Open AI 资源
  • python 3.12 或更高版本

设置

  • 首先创建一个 Azure Open AI 资源,并获取 API 密钥和端点
  • 创建一个 python 环境并安装所需的包
  • 安装 autogen 0.4.1
  • 安装其他必要的包
pip install yfinance matplotlib scikit-learn
  • 我还没有弄清楚如何使用 autogen 代理自动安装包
  • 我现在正在创建一个控制台应用程序
  • 现在导入必要的库并设置环境变量
from collections import defaultdict
import datetime
from pathlib import Path
import tempfile
import time
from typing import Sequence
import PyPDF2
from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_agentchat.conditions import MaxMessageTermination, TextMentionTermination
from autogen_agentchat.messages import AgentEvent, ChatMessage
from autogen_agentchat.teams import SelectorGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import AzureOpenAIChatCompletionClient
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import MagenticOneGroupChat
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_core.code_executor import CodeBlock
from autogen_core import CancellationToken
from autogen_ext.code_executors.local import LocalCommandLineCodeExecutor
from autogen_agentchat.ui import Console
from autogen.code_utils import extract_code
from autogen.code_utils import create_virtual_env
import asyncio
import os
import venv
from bs4 import BeautifulSoup
from openai import AzureOpenAI
from dotenv import load_dotenv
import streamlit as st
from PIL import Image
import base64
import requests
import io
## 加载 .env 文件
load_dotenv()
  • .env 文件用于环境变量的创建
  • 现在设置 Azure Open AI 客户端以及 autogen 客户端
client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT_VISION"), 
  api_key=os.getenv("AZURE_OPENAI_KEY_VISION"),  
  api_version="2024-10-21"
)
model_name = "gpt-4o-2"
model_client = AzureOpenAIChatCompletionClient(model="gpt-4o", 
                                               azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"), 
                                               api_key=os.getenv("AZURE_OPENAI_API_KEY"), 
                                               api_version="2024-10-21")
  • 我关注的不是使用 Open AI 版本,而是 Azure Open AI

  • 这是包含以下过程的主文件

  • 流程如下

  • 首先要求 LLM 创建一段 Python 代码以获取特斯拉过去 6 个月的股票价格,保存为 stocks.csv 然后打印

  • 我正在打印输出以检查代码是否正确

  • 现在从输出中提取代码

  • 执行上述步骤创建的代码。这是为了下载数据集以用于基于数据科学的预测

  • 现在使用 LLM 创建一段 Python 代码,以使用 sklearn 预测收盘价,使用 stocks.csv 文件作为输入

  • 从输出中提取代码

  • 执行使用 sklearn 创建的预测代码并打印输出

  • 还将预测结果保存到 stockspred.csv

  • 两个 csv 文件应位于编码文件夹中

  • 首先输出代码,然后输出代码执行的结果,获取数据并保存

  • 现在创建机器学习代码

async def main():
    st.set_page_config(page_title="CodeAgent", page_icon=":robot:")
    st.title("CodeAgent :robot:")
    st.write("一个可以阅读和编写代码以解决编程问题的 AI 代理。")
    work_dir = Path("coding")
    work_dir.mkdir(exist_ok=True)
    code_create = AssistantAgent(
        "CreateCodeAgent",
        description="为给定任务创建代码。",
        #tools=[bing_search_and_summarize],
        model_client=model_client,
        system_message="""
        为给定任务创建代码。以 Python 编写代码,仅将代码作为输出响应。
        还要添加运行代码所需的必要包。
        如果代码需要任何数据,请创建一个 json 文件并在代码中添加 json 文件的链接。
        如果有数据,请将输出保存为名为 stocks.csv 的 csv 文件。
        """,        
    )
    # 使用 GPTAssistantAgent 生成代码
    #code_create.initiate_chat(model_client, message="写一个打印 'Hello, World!' 的 Python 函数")
    text_mention_termination = TextMentionTermination("TERMINATE")
    max_messages_termination = MaxMessageTermination(max_messages=25)
    termination = text_mention_termination | max_messages_termination
    team = MagenticOneGroupChat([code_create], 
                                 model_client=model_client,
                                 termination_condition=termination, max_turns=1)
    
    # 提取生成的代码
    result = await Console(team.run_stream(task="写一个 Python 函数以聊天过去 6 个月的特斯拉股票价格并以表格形式打印。"))
    last_message = result.messages
    code_blocks = extract_code(last_message[-1].content)
    shell_commands = "pip install yfinance matplotlib"
    python_code = ""
    if code_blocks:
        print("提取的代码块:", code_blocks)
        #shell_commands = next(block[1] for block in code_blocks if block[0] == 'sh' or block[0] == 'bash' or block[0] == 'shell')
        #print(shell_commands)
        python_code = next(block[1] for block in code_blocks if block[0] == 'python')
        #print('仅 Python 代码: ', python_code)
    
    try:
        venv_dir = ".venv"
        venv_context = create_virtual_env(venv_dir)
        executor = LocalCommandLineCodeExecutor(virtual_env_context=venv_context, work_dir=work_dir)
        shresult = await executor.execute_code_blocks(
                code_blocks=[
                    CodeBlock(language="shell", code=shell_commands),
                ],
                cancellation_token=CancellationToken(),
            )
        print(shresult.output.strip())
    except Exception as e:
        pass
    local_executor = LocalCommandLineCodeExecutor(work_dir=work_dir)
    result = await local_executor.execute_code_blocks(
            code_blocks=[
                CodeBlock(language="python", code=python_code),
            ],
            cancellation_token=CancellationToken(),
        )
    #print(result)
    print(result.output.strip())
    code_create = AssistantAgent(
        "CreateCodeAgent",
        description="为给定任务创建代码。",
        #tools=[bing_search_and_summarize],
        model_client=model_client,
        system_message="""
        为 stocks.csv 创建代码以预测收盘价,使用 lstm。
        还要添加运行代码所需的必要包。
        如果代码需要任何数据,请创建一个 json 文件并在代码中添加 json 文件的链接。
        如果有数据,请将输出保存为名为 stockspred.csv 的 csv 文件。
        """,        
    )
    # 使用 GPTAssistantAgent 生成代码
    #code_create.initiate_chat(model_client, message="写一个打印 'Hello, World!' 的 Python 函数")
    text_mention_termination = TextMentionTermination("TERMINATE")
    max_messages_termination = MaxMessageTermination(max_messages=25)
    termination = text_mention_termination | max_messages_termination
    team = MagenticOneGroupChat([code_create], 
                                 model_client=model_client,
                                 termination_condition=termination, max_turns=1)
    
    # 提取生成的代码
    result = await Console(team.run_stream(task="写一段 Python 代码以使用 sklearn 预测 stocks.csv 的收盘价并以表格形式打印。同时保存为 stockspred.csv"))
    last_message = result.messages
    code_blocks = extract_code(last_message[-1].content)
    shell_commands = "pip install yfinance matplotlib scikit-learn"
    python_code = ""
    if code_blocks:
        print("提取的代码块:", code_blocks)
        #shell_commands = next(block[1] for block in code_blocks if block[0] == 'sh' or block[0] == 'bash' or block[0] == 'shell')
        #print(shell_commands)
        python_code = next(block[1] for block in code_blocks if block[0] == 'python')
    print('预测的 Python 代码: ', python_code)
    local_executor = LocalCommandLineCodeExecutor(work_dir=work_dir)
    result = await local_executor.execute_code_blocks(
            code_blocks=[
                CodeBlock(language="python", code=python_code),
            ],
            cancellation_token=CancellationToken(),
        )
    #print(result)
    print('预测: ', result.output.strip())
  • 现在运行主函数
if __name__ == "__main__":
    asyncio.run(main())
  • 运行代码并检查输出
  • 编码文件夹中应该有 stocks.csv 和 stockspred.csv
  • 编码文件夹是存储所有代码和工件的地方。

原始文章 — Samples2025/AgentsAI/codeagent.md at main · balakreshnan/Samples2025

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多