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

Suna: 开源多面手 AI 代理

GitHub:GitHub - kortix-ai/suna: Suna - Open Source Generalist AI Agent

更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI

Suna 是一个完全开源的 AI 助手,可帮助您轻松完成实际任务。通过自然对话,Suna 成为您进行研究、数据分析和日常挑战的数字伴侣 — 将强大的功能与直观的界面相结合,了解您的需求并提供结果。

Suna 强大的工具包包括用于导航 Web 和提取数据的无缝浏览器自动化、用于文档创建和编辑的文件管理、Web 爬虫和扩展搜索功能、用于系统任务的命令行执行、网站部署以及与各种 API 和服务的集成。这些功能和谐地协同工作,使 Suna 能够解决您的复杂问题并通过简单的对话实现工作流程自动化!

主要功能

✅ 浏览器自动化:自动抓取网页数据,告别手动复制粘贴!
✅ 文件管理:智能生成报告、表格,支持多种格式,文档管理从未如此简单。
✅ 网络爬虫:精准抓取信息,自动生成总结,研究效率翻倍!
✅ 命令行执行:自动化脚本、系统管理,复杂操作一句话搞定。
✅ API集成:无缝对接LinkedIn、Crunchbase等平台,轻松获取第三方数据。
✅ 数据分析:市场趋势、投资建议、论文对比,Suna帮你深度挖掘数据价值!

安装和使用

先决条件
  1. Supabase:

    • 创建新的 Supabase 项目
    • 保存项目的 API URL、anon key 和服务角色 key 以备后用
    • 安装 Supabase CLI
  2. Redis 和 RabbitMQ:

    • 转到文件夹/backend​
    • 跑docker compose up redis rabbitmq​
  3. Daytona:

    • 在 Daytona 上创建帐户
    • 从您的账户设置中生成 API 密钥
    • 转到图片
    • 点击“添加图片”
    • Enter 作为映像名称kortix/suna:0.1.2​
    • 设置为 Entrypoint/usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf​
  4. LLM API 密钥:

    • 获取 API 密钥 Anthropic
    • 虽然其他提供程序应该通过 LiteLLM 工作,但建议使用 Anthropic – 需要调整提示,以便其他提供程序为工具调用输出正确的 XML。
  5. 搜索 API 密钥(可选):

    • 要增强搜索功能,请获取 Tavily API 密钥
    • 对于 Web 抓取功能,请获取 Firecrawl API 密钥
  6. RapidAPI API 密钥(可选):

    • 要启用 LinkedIn 等 API 服务,您需要一个 RapidAPI 密钥

    • 每个服务都需要在你的 RapidAPI 账户中单独激活:

      1. 在其相应的文件中找到服务的 (例如,在 backend/agent/tools/data_providers/LinkedinProvider.pybase_url"https://linkedin-data-scraper.p.rapidapi.com"​)
      2. 在 RapidAPI Marketplace 上访问该特定 API
      3. 订阅服务(许多服务提供免费套餐,但请求有限)
      4. 订阅后,您的代理将通过 API 服务工具使用该服务
安装步骤
  1. 克隆存储库:
git clone https://github.com/kortix-ai/suna.git
cd suna
  1. 配置后端环境:
cd backend
cp .env.example .env  # Create from example if available, or use the following template

编辑文件并填写您的凭据:.env​

NEXT_PUBLIC_URL="http://localhost:3000"# Supabase credentials from step 1
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key# Redis credentials from step 2
REDIS_HOST=your_redis_host
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
REDIS_SSL=True  # Set to False for local Redis without SSLRABBITMQ_HOST=your_rabbitmq_host # Set to localhost if running locally
RABBITMQ_PORT=5672# Daytona credentials from step 3
DAYTONA_API_KEY=your_daytona_api_key
DAYTONA_SERVER_URL="https://app.daytona.io/api"
DAYTONA_TARGET="us"# Anthropic
ANTHROPIC_API_KEY=# OpenAI API:
OPENAI_API_KEY=your_openai_api_key# Optional but recommended
TAVILY_API_KEY=your_tavily_api_key  # For enhanced search capabilities
FIRECRAWL_API_KEY=your_firecrawl_api_key  # For web scraping capabilities
RAPID_API_KEY=
  1. 设置 Supabase 数据库:
# Login to Supabase CLI
supabase login# Link to your project (find your project reference in the Supabase dashboard)
supabase link --project-ref your_project_reference_id# Push database migrations
supabase db push

然后,再次转到 Supabase Web 平台 ->选择您的项目 -> 项目设置 -> 数据 API -> 并在“公开的架构”中添加“basejump”(如果还没有)

  1. 配置前端环境:
cd ../frontend
cp .env.example .env.local  # Create from example if available, or use the following template

编辑文件:.env.local​

NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
NEXT_PUBLIC_BACKEND_URL="http://localhost:8000/api"  # Use this for local development
NEXT_PUBLIC_URL="http://localhost:3000"

注意:如果您使用的是 Docker Compose,请使用容器名称而不是 localhost:

NEXT_PUBLIC_BACKEND_URL="http://backend:8000/api"  # Use this when running with Docker Compose
  1. 安装依赖项:
# Install frontend dependencies
cd frontend
npm install# Install backend dependencies
cd ../backend
poetry install
  1. 启动应用程序:
    在一个终端中,启动前端:
cd frontend
npm run dev

在另一个终端中,启动后端:

cd backend
poetry run python3.11 api.py

在另一个终端中,启动 backend worker:

cd backend
poetry run python3.11 -m dramatiq run_agent_background

5-6. Docker Compose 替代方案:

在使用 Docker Compose 运行之前,请确保您的环境文件已正确配置:

  • 在 中,如上所述设置所有必需的环境变量backend/.env​

    • 对于 Redis 配置,请使用 instead 而不是 localhostREDIS_HOST=redis​

    • 对于 RabbitMQ,请使用 localhostRABBITMQ_HOST=rabbitmq​

    • Docker Compose 设置将自动设置这些 Redis 环境变量:

      REDIS_HOST=redis
      REDIS_PORT=6379
      REDIS_PASSWORD=
      REDIS_SSL=FalseRABBITMQ_HOST=rabbitmq
      RABBITMQ_PORT=5672
      
  • 在 中,确保设置为使用容器名称frontend/.env.localNEXT_PUBLIC_BACKEND_URL="http://backend:8000/api"​

然后运行:

export GITHUB_REPOSITORY="your-github-username/repo-name"
docker compose -f docker-compose.ghcr.yaml up

如果您在本地构建镜像,而不是使用预构建的镜像:

docker compose up

Docker Compose 设置包括后端将自动使用的 Redis 和 RabbitMQ 服务。

  1. 访问 Suna:

    • 打开浏览器并导航到http://localhost:3000​
    • 使用 Supabase 身份验证注册一个帐户
    • 开始使用您的自托管 Suna 实例!

实战演习

我们让它规划下5.1的旅游行程

生成一次前往伦敦的个人旅行,5 月 1 日从深圳出发。行程将持续 10 天。在伦敦市中心寻找一家谷歌评价至少为 4.5 分的住宿,为我寻找旅途中有趣的户外活动。生成一份详细的行程计划。

可以看到suna做了一系列的推理,并且循环使用了:**网络搜索->命令执行->创建文件**等操作!经过了15次的tools调用,最终生成了一份完整的攻略计划!

可以看到,功能还是很强大的,目前看最大的缺点就是价格有点贵,每个月只能使用2小时,费用却需要20美元!

相关文章:

  • ESP32-C3/ESP32-C3FH4/低功耗SOC的WIFI芯片集成2.4G和BLE5.0二合一
  • 游戏站的几种形式
  • android studio clone子分支
  • 数据标注的黄金标准:如何为机器学习构建可靠标签?
  • 【python基础知识】Day 27 函数专题2:装饰器
  • 实现书签-第一部分
  • 浮点数截断法:四舍五入的精确模拟
  • 【ARM】MDK如何将变量存储到指定内存地址
  • springCloud/Alibaba常用中间件之Seata分布式事务
  • Seata源码—4.全局事务拦截与开启事务处理一
  • Armijo rule
  • AI:初识NLP
  • Java 并发编程归纳总结(可重入锁 | JMM | synchronized 实现原理)
  • Jetson Orin Nano - 命令刷机笔记
  • GEE计算 RSEI(遥感生态指数)
  • MYSQL创建索引的原则
  • 【Spring Boot后端组件】mybatis-plus使用
  • Python炫酷星空
  • 使用Python调用DeepSeek的示例
  • 【项目】自主实现HTTP服务器:从Socket到CGI全流程解析
  • 马上评|家长抱婴儿值护学岗,如何避免“被自愿”?
  • 六省会共建交通枢纽集群,中部六省离经济“第五极”有多远?
  • 布局50多个国家和地区,我国科技型企业孵化器数量全球第一
  • 外企聊营商|威能集团:公平环境增“暖”意
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 因存在安全隐患,福特公司召回约27.4万辆SUV