Suna开源通用人工智能代理小白入门指南

一、项目介绍

Suna是一个完全开源的AI助手,旨在帮助用户轻松完成现实世界的任务。通过自然对话,Suna成为用户进行研究、数据分析和应对日常挑战的数字伙伴,它结合了强大的功能和直观的界面,能够理解用户需求并提供结果。

Suna Web 界面

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

二、项目架构

Suna由四个主要组件组成:

  1. 后端API:是一个Python/FastAPI服务,处理REST端点、线程管理,并通过LiteLLM与OpenAI、Anthropic等大型语言模型(LLM)集成。
  2. 前端:基于Next.js/React构建的应用程序,提供响应式用户界面,包括聊天界面、仪表盘等。
  3. Agent Docker:为每个代理提供隔离的执行环境,具备浏览器自动化、代码解释器、文件系统访问、工具集成和安全功能。
  4. Supabase数据库:负责数据持久化,包括身份验证、用户管理、对话历史记录、文件存储、代理状态、分析和实时订阅等功能。
Suna架构

三、使用场景

Suna可应用于多种场景,以下是一些示例:

  1. 竞争对手分析:例如分析英国医疗保健行业的市场,找出主要参与者、市场规模、优势和劣势,并生成PDF报告。
  2. 风险投资基金列表:获取美国按资产管理规模排名的重要风险投资基金列表,包括网站URL和联系邮箱。
  3. 保险政策查找:为意大利米兰的房屋寻找性价比最高的保险政策。
  4. 候选人搜索:在LinkedIn上寻找德国慕尼黑的初级软件工程师候选人,要求至少拥有计算机科学相关本科学位和一年工作经验。
  5. 报告撰写:撰写关于美国股市过去两周情况的详细报告,分析标准普尔500指数趋势,并预测未来几周市场走向。
  6. 产品评论分析:在亚马逊上查找Nespresso咖啡机的常见产品问题,并撰写关于如何将这些问题转化为竞争优势的报告。
  7. 游戏生成:生成一个90年代风格的迷你游戏,玩家驾驶宇宙飞船与绿色外星人战斗。
  8. 公司旅行规划:为公司规划从法国巴黎到美国加利福尼亚的7天旅行路线,考虑天气情况安排活动。
  9. Excel数据处理:创建一个包含意大利彩票游戏(Lotto、10eLotto和Million Day)基本信息的Excel电子表格。
  10. 数据库抓取:搜索开放招标数据库,如欧盟TED和美国SAM.gov,找出清洁技术行业的相关采购招标,总结要求并生成报告。
  11. 活动演讲者挖掘:从欧洲寻找20位过去一年在会议上发言的AI伦理演讲者,获取他们的联系信息和演讲摘要。
  12. 科学论文总结和交叉引用:研究并比较过去五年关于酒精对人体影响的科学论文,生成相关报告。
  13. 潜在客户生成:为新的AI客户支持工具生成至少20个西班牙巴塞罗那拥有10 - 50名员工的B2B潜在客户列表,包括公司名称、网站、员工规模和联系信息。
  14. 研究与初步联系草稿:在LinkedIn上研究清洁技术行业的潜在B2B客户,获取他们的网站和电子邮件地址,并根据公司概况生成个性化的初步联系电子邮件。
  15. SEO分析:为网站suna.so生成SEO报告分析,找出按关键词集群排名靠前的页面,并确定缺失的主题。
  16. 公众评论聚类:通过抓取麦当劳在公共页面(如Google Reviews)上的评论进行聚类,生成关于最常见反馈和评论的详细报告,以了解可改进之处和产生良好效果的方面。
  17. 个人旅行规划:规划从泰国曼谷到英国伦敦的10天个人旅行,在伦敦市中心找到谷歌评分为至少4.5的住宿,并安排有趣的户外活动,生成详细的行程计划。
  18. 股票抓取和监控:监控葡萄牙10家最大的上市公司,抓取过去30个交易日的股价数据并生成报告。
  19. 近期融资初创公司报告:在Crunchbase、Dealroom和TechCrunch上筛选SaaS金融领域的A轮融资初创公司,构建包含公司数据、创始人信息和联系信息的报告,用于外部销售。
  20. 论坛讨论抓取:通过谷歌搜索罗马美容中心的开放论坛讨论,找出评论最好的5家美容中心。

四、本地运行/自托管步骤

(一)所需组件

  1. 一个用于数据库和身份验证的Supabase项目。
  2. 一个用于缓存和会话管理的Redis数据库。
  3. 一个用于安全代理执行的Daytona沙箱。
  4. 用于API后端的Python 3.11。
  5. 大型语言模型(LLM)提供商(OpenAI或Anthropic)的API密钥。
  6. (可选但推荐)用于增强搜索功能的Tavily API密钥。
  7. (可选)用于启用API服务(如LinkedIn等)的RapidAPI密钥。

(二)前提条件

  1. Supabase
    • 创建一个新的Supabase项目。
    • 保存项目的API URL、匿名密钥和服务角色密钥,供后续使用。
    • 安装Supabase CLI。
  2. Redis:可以选择以下方式设置Redis实例:
    • Upstash Redis(推荐用于云部署)。
    • 本地安装:
      • Mac:使用命令 brew install redis 进行安装。
      • Linux:根据发行版的具体说明进行安装。
      • Windows:使用WSL2或Docker。
    • 保存Redis连接详细信息,供后续使用。
  3. Daytona
    • 在Daytona上创建一个账户。
    • 从账户设置中生成一个API密钥。
    • 进入Images页面,点击“Add Image”。
    • 输入 adamcohenhillel/kortix-suna:0.0.20 作为镜像名称。
    • 设置 /usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf 作为入口点。
  4. LLM API密钥:从OpenAI或Anthropic获取API密钥。虽然其他提供商通过LiteLLM也应该可以工作,但推荐使用OpenAI和Anthropic。
  5. 搜索API密钥(可选):为了增强搜索功能,获取Tavily API密钥。
  6. RapidAPI API密钥(可选):要启用API服务(如LinkedIn等),需要一个RapidAPI密钥。每个服务需要在RapidAPI账户中单独激活:
    • 在相应文件中找到服务的 base_url(例如,backend/agent/tools/data_providers/LinkedinProvider.py 中的 "https://linkedin-data-scraper.p.rapidapi.com")。
    • 在RapidAPI市场上访问该特定API。
    • 订阅该服务(许多服务提供有限请求的免费层)。订阅后,该服务将通过API Services工具供代理使用。

(三)安装步骤

  1. 克隆仓库
    git clone https://github.com/kortix-ai/suna.git
    cd suna
    
  2. 配置后端环境
    cd backend
    cp .env.example .env  # 如果存在示例文件,则从示例创建,否则使用以下模板
    
    编辑 .env 文件并填写凭据:
    NEXT_PUBLIC_URL="http://localhost:3000" # 步骤1中的Supabase凭据
    SUPABASE_URL=your_supabase_url
    SUPABASE_ANON_KEY=your_supabase_anon_key
    SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
    
    # 步骤2中的Redis凭据
    REDIS_HOST=your_redis_host
    REDIS_PORT=6379
    REDIS_PASSWORD=your_redis_password
    REDIS_SSL=True  # 对于没有SSL的本地Redis,设置为False
    
    # 步骤3中的Daytona凭据
    DAYTONA_API_KEY=your_daytona_api_key
    DAYTONA_SERVER_URL="https://app.daytona.io/api"
    DAYTONA_TARGET="us"
    
    # Anthropic或OpenAI:
    # Anthropic
    ANTHROPIC_API_KEY=
    MODEL_TO_USE="anthropic/claude-3-7-sonnet-latest"
    # 或OpenAI API:
    OPENAI_API_KEY=your_openai_api_key
    MODEL_TO_USE="gpt-4o"
    
    # 可选但推荐
    TAVILY_API_KEY=your_tavily_api_key
    # 可选
    RAPID_API_KEY=
    
  3. 设置Supabase数据库
    # 登录到Supabase CLI
    supabase login
    
    # 链接到你的项目(在Supabase仪表板中找到项目参考)
    supabase link --project-ref your_project_reference_id
    
    # 推送数据库迁移
    supabase db push
    
    然后,再次访问Supabase web平台 -> 选择你的项目 -> 项目设置 -> 数据API -> 如果“Exposed Schema”中没有“basejump”,则添加。
  4. 配置前端环境
    cd ../frontend
    cp .env.example .env.local  # 如果存在示例文件,则从示例创建,否则使用以下模板
    
    编辑 .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"
    NEXT_PUBLIC_URL="http://localhost:3000"
    
  5. 安装依赖项
    # 安装前端依赖项
    cd frontend
    npm install
    
    # 安装后端依赖项
    cd ../backend
    pip install -r requirements.txt
    
  6. 启动应用程序
    • 在一个终端中,启动前端:
      cd frontend
      npm run dev
      
    • 在另一个终端中,启动后端:
      cd backend
      python api.py
      
  7. 访问Suna
    • 打开浏览器,导航到 http://localhost:3000
    • 使用Supabase身份验证注册一个账户。
    • 开始使用自托管的Suna实例!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容