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美元!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直接从图片生成 html

1. 起因, 目的: 无意间碰到一个网站: https://wise.com/zh-cn/currency-converter/brl-to-cny-rate其实我就是想搜一下巴西的货币单位是什么。这个网站的设计很漂亮, 尤其是颜色搭配很不错,讨人喜欢。所以我想让 AI 帮我生成类似的效果。本文…

验证码与登录过程逻辑学习总结

目录 前言 一、验证码与登录 二、使用步骤 1.先apipost测试一波 2.先搞验证码 3.跨域问题 4.后端走起 总结 前言 近期要做一个比较完整的demo,需要自己做一个前端登录页面,不过api接口都是现成的,一开始以为过程会很easy,…

轨道炮--范围得遍历,map巧统计

1.思路很难想,但代码一看一下就明白了,就是模拟时间,map存起来遍历也不受10*6影响 2.每次先统计点对应的直线,再动这个点,map一遍历实时更新ma统计max,AC!!!! https://www.luogu.com.cn/problem/P8695 #i…

Vue 3.5 新特性深度解析:全面升级的开发体验

Vue 3.5 新特性深度解析:全面升级的开发体验 前言 随着Vue 3.5的正式发布,这个渐进式JavaScript框架再次带来了令人兴奋的改进。本文将深入剖析Vue 3.5的核心更新,帮助开发者快速掌握新特性并应用于实际项目。 ✨ 核心新特性 1. 增强的响应…

质量管理工程师面试总结

今天闲着无聊参加了学校招聘会的一家双选会企业,以下是面试的过程。 此次面试采用的是一对多的形式。(此次三个求职者,一个面试官) 面试官:开始你们每个人先做个自我介绍吧。 哈哈哈哈哈哈哈哈,其实我们…

c++ std库中的文件操作学习笔记

1. 概述 C标准库提供了 头文件中的几个类来进行文件操作,这些类封装了底层的文件操作,提供了面向对象和类型安全的接口,使得文件读写更加便捷和高效。主要的文件流类包括: std::ifstream:用于从文件中读取数据。 st…

【网络安全】SQL注入

如果文章不足还请各位师傅批评指正! 想象一下,你经营着一家咖啡店,顾客可以通过店内的点单系统下单。这个系统会根据顾客的输入,向后厨发送指令,比如“为顾客A准备一杯拿铁”。 然而,如果有个不怀好意的顾客…

解决Mawell1.29.2启动SQLException: You have an error in your SQL syntax问题

问题背景 此前在openEuler24.03 LTS环境下的Hive使用了MySQL8.4.2,在此环境下再安装并启动Maxwell1.29.2时出现如下问题 [ERROR] Maxwell: SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version f…

Oracle APEX IR报表列宽调整

目录 1. 问题:如何调整Oracle APEX IR报表列宽 2. 解决办法 1. 问题:如何调整Oracle APEX IR报表列宽 1-1. 防止因标题长而数据短,导致标题行的文字都立起来了,不好看。 1-2. 防止因数据太长而且中间还没有空格,把列…

pytorch 14.3 Batch Normalization综合调参实践

文章目录 一、Batch Normalization与Batch_size综合调参二、复杂模型上的Batch_normalization表现1、BN对复杂模型(sigmoid)的影响2、模型复杂度对模型效果的影响3、BN对复杂模型(tanh)的影响 三、包含BN层的神经网络的学习率优化…

Model.eval() 与 torch.no_grad() PyTorch 中的区别与应用

Model.eval() 与 torch.no_grad(): PyTorch 中的区别与应用 在 PyTorch 深度学习框架中,model.eval() 和 torch.no_grad() 是两个在模型推理(inference)阶段经常用到的函数,它们各自有着独特的功能和应用场景。本文将详细解析这两…

Swagger go中文版本手册

Swaggo(github.com/swaggo/swag)的注解语法是基于 OpenAPI 2.0 (以前称为 Swagger 2.0) 规范的,并添加了一些自己的约定。 主要官方文档: swaggo/swag GitHub 仓库: 这是最权威的来源。 链接: https://github.com/swaggo/swag重点关注: README.md: 包含了基本的安装、使用…

物联网设备远程管理:基于代理IP的安全固件更新通道方案

在物联网设备远程管理中,固件更新的安全性直接关系到设备功能稳定性和系统抗攻击能力。结合代理IP技术与安全协议设计,可构建安全、高效的固件更新通道。 一、代理IP在固件更新中的核心作用 网络层隐匿与路由优化 隐藏更新源服务器:通过代理I…

【C++重载操作符与转换】句柄类与继承

目录 一、句柄类的基本概念 1.1 什么是句柄类 1.2 句柄类的设计动机 1.3 句柄类的基本结构 二、句柄类的实现方式 2.1 基于指针的句柄类 2.2 值语义的句柄类 2.3 引用计数的句柄类 三、句柄类与继承的结合应用 3.1 实现多态容器 3.2 实现插件系统 3.3 实现状态模式…

谷歌曾经的开放重定向漏洞(如今已经修复) -- noogle DefCamp 2024

题目描述: 上周,我决定创建自己的搜索引擎。这有点难,所以我背上了另一个。我也在8000端口上尝试了一些东西。 未发现题目任何交互,但是存在一个加密js const _0x43a57f _0x22f9; (function(_0x3d7d57, _0x426e05) {const _0x16c3fa _0x22f9, _0x3187…

【C#】ToArray的使用

在 C# 中&#xff0c;ToArray 方法通常用于将实现了 IEnumerable<T> 接口的集合&#xff08;如 List<T>&#xff09;转换为数组。这个方法是 LINQ 提供的一个扩展方法&#xff0c;位于 System.Linq 命名空间中。因此&#xff0c;在使用 ToArray 方法之前&#xff0…

资产管理平台—chemex

1、简介 Chemex CMDB&#xff08;Configuration Management Database&#xff09;是一个基于现代微服务架构的资产管理与自动化平台&#xff0c;专为 IT 基础设施与业务资产管理而设计。其核心目标是解决大规模系统运维中资产信息混乱、配置分散、数据不一致等问题&#xff0c…

【AI】mcp server是什么玩意儿

文章目录 背景mcp server的必要性mcp server的基本概念mcp server的架构与核心组件总结 背景 劈里啪啦的整了一堆概念&#xff0c;对mcp server还是只停留在知道个词的地步。 虽然目前大模型的对话生成能力很强&#xff0c;但是大模型&#xff08;如deepseek&#xff09;并不能…

c# 数据结构 树篇 入门树与二叉树的一切

事先声明,本文不适合对数据结构完全不懂的小白 请至少学会链表再阅读 c# 数据结构 链表篇 有关单链表的一切_c# 链表-CSDN博客 数据结构理论先导:《数据结构&#xff08;C 语言描述&#xff09;》也许是全站最良心最通俗易懂最好看的数据结构课&#xff08;最迟每周五更新~~&am…

《Cookie Cutter》中2000多张精灵表与10000个2D光源的管理之道

一个小团队如何在多个平台上以优秀的效果展示手绘动画&#xff1f;Subcult Joint 工作室给出了答案。他们用六年时间开发出了游戏《Cookie Cutter》。游戏中使用了数千个使用传统动画技术制作的高分辨率资产&#xff0c;而且这些资产都在 Unity 中进行了优化。由于工作室需要在…