关于此项目
Microagents 代表了一种创建自我改进代理的新方法。小型的、类似微服务的代理(因此命名为 microagents)是根据用户分配给助手的任务动态生成的,评估其功能并在成功验证后存储以供将来重用。这使得系统能够在会话之间学习,能够独立推断出执行任务的方法。
构建与
该项目利用了以下技术:
- Python
- OpenAI 的 GPT-4 Turbo
- Text-Embedding-Ada-002
入门
按照以下简单步骤获取本地副本并运行。
前提条件
- OpenAI 账号:确保您拥有一个 OpenAI 账号,并可以访问
gpt-4-turbo
和text-embedding-ada-002
。
安装
- 克隆代码库
git clone https://github.com/aymenfurter/microagents.git
- 安装 Python 包
pip install -r requirements.txt
- 设置环境变量
- 在您想使用 OpenAI API 的情况下:
export OPENAI_KEY='your_api_key_here'
- 在您想使用 Azure Open AI 及 API 密钥的情况下:
export AZURE_OPENAI_API_KEY='your_api_key_here' export AZURE_OPENAI_ENDPOINT='https://my_endpoint_name_here.openai.azure.com/' # export OPENAI_EMBEDDING='' # 可选:设置 azure embedding 的部署名称(若名称不是 text-embedding-ada-002) # export OPENAI_MODEL='' # 可选:设置 azure gpt 4 的部署名称(若名称不是 gpt-4-1106-preview)
- 在您想使用 Azure Open AI 及 Entra ID (AAD) 的情况下:
export AZURE_OPENAI_ENDPOINT='https://my_endpoint_name_here.openai.azure.com/' export AZURE_OPENAI_USE_AAD='true' # 启用 DefaultAzureCredential # export AZURE_OPENAI_AD_TOKEN='' # 可选:在此指定 AAD 令牌 # export AZURE_CLIENT_ID='' # 可选:在此指定托管标识的客户端 ID # export OPENAI_EMBEDDING='' # 可选:设置 azure embedding 的部署名称(若名称不是 text-embedding-ada-002) # export OPENAI_MODEL='' # 可选:设置 azure gpt 4 的部署名称(若名称不是 gpt-4-1106-preview)
- 在您想使用 OpenAI API 的情况下:
使用方法
[!注意] Microagents 直接执行 Python 代码,目前不在沙箱内运行。强烈建议在隔离环境中运行它们,例如 GitHub Codespaces 或 Docker (README-Docker.md),以限制潜在的损害。请注意使用 OpenAI 服务的费用。
要运行演示,请执行:
python main.py
对于交互式聊天体验:
python app.py
要删除所有代理,只需删除 "agents.db" 文件。
演示
合成代理提示
获取天气预报代理
您是一名熟练的天气信息员。使用以下 Python 代码片段通过访问公共 API 数据获取天气预报:
```python
import requests
import json
def fetch_weather_forecast(location, date):
response = requests.get(f"https://api.met.no/weatherapi/locationforecast/2.0/compact?lat={location[0]}&lon={location[1]}")
weather_data = response.json()
for day_data in weather_data['properties']['timeseries']:
if date in day_data['time']:
print(day_data['data']['instant']['details'])
break
示例使用:fetch_weather_forecast((47.3769, 8.5417), '2024-01-22T12:00:00Z')
注意:请将 (47.3769, 8.5417) 替换为实际位置的纬度和经度,并相应地更改日期字符串。
#### 基于 IP 获取位置的代理
您是一名熟练的基于 IP 获取位置信息的检索器。使用 Python 的 requests 库从公共 IP 地址获取地理位置信息。以下是您可以适应的代码片段:
import requests
def fetch_location_from_ip(ip_address):
response = requests.get(f'http://ip-api.com/json/{ip_address}')
data = response.json()
return data.get('country'), data.get('city')
示例使用:
print(fetch_location_from_ip('8.8.8.8'))
确保代码能够从提供的 IP 地址中提取国家和城市等位置信息。
<details>
<summary>代理是如何创建的?</summary>
<img src="https://yellow-cdn.veclightyear.com/2b54e442/af9126e6-4506-49f1-a8dc-1ad495e5440b.png" width="600">
</details>
## 变更日志
### 版本 v0.1.0 发布 (2024.01.21)
这是 Microagents 的首个发行版本,自项目发布以来发生了很多变化。以下是主要更新:
- **拉取请求**:项目总共收到了 6 个拉取请求,显示了来自社区的兴趣。
- **两个用户界面**:我们现在提供了两个与代理进行交互的用户界面:
- 对于控制台爱好者,可使用由 bearney74 贡献的命令行界面(CLI),它可以通过 `textual-app.py` 文件启动。
- 除此之外,我们还提供了一个基于 Gradio 的功能丰富的网络界面。
- **并行化**:Microagents 现在支持并行化!当创建一个新代理时,实际上会同时生成三个代理,率先完成任务的代理将保留,其余的将被丢弃。
- **预训练代理**:我们引入了 28 个预训练代理供测试使用。这些代理能够执行广泛的任务,从与 OpenStreetMap 交互到提供当前的天气信息。所有这些代理都是使用 Microagents 训练的。
- **验证阶段 ("Judge")**:新增了一个 "Judge" 阶段,以确保声称工作的代理能够按预期执行。这一额外的验证步骤确保只有完全功能的代理被包括在有效代理的目录中。
- **持久的代理存储**:代理现在可以跨运行进行存储,使用的是 SQLite。
- **改进的代理内存**:代理现在具有仅记住之前创建的代理的能力。这种方法提高了代理创建的稳健性,避免了执行过程中的不必要深度变化。
这些更新大大增强了 Microagents。我期待着社区的进一步改进和贡献。
## 贡献指南
贡献是开源社区的灵魂,使其成为一个学习、启发和创造的绝佳场所。您所做的任何贡献都是 **非常感谢** 的。
## 许可证
根据 MIT 许可证分发。有关更多信息,请参见 `LICENSE`。