https://github.com/ThousandBirdsInc/chidori/assets/515757/6b088f7d-d8f7-4c7e-9006-4360ae40d1de
在Github上为我们点赞!加入我们的Discord。
目录
📖 Chidori V2
Chidori 是一个开源的编排器、运行时和集成开发环境,用于与现代AI工具共建软件。 它特别适合构建AI代理,解决以下问题:
- 我们如何理解代理正在做什么以及它是如何进入特定状态的?
- 我们如何在执行过程中暂停并在人类审查后继续?
- 处理状态空间探索中的偶然复杂性
您可以使用 Python 或 JavaScript 编写代码,我们提供一个接口层,以处理长时间运行的工作流中的 AI 模型的复杂性。我们避免了声明新语言或 SDK 的需求,以提供这些功能,您可以利用您已经熟悉的软件模式。
功能:
- 运行时使用 Rust 编写,支持 Python 和 JavaScript 代码执行
- 缓存行为并从部分执行的代理中恢复
- 时间旅行调试,回滚到先前的执行状态
- 可视化调试环境,直观地查看和操作代码执行状态的图表
- 创建并导航树搜索代码执行工作流
我们正在根据反馈不断做出重大更改,并对不同功能进行迭代。 非常欢迎您的反馈!请添加到我们的问题跟踪器中。
⚡️ 快速入门
安装
Chidori 在 crates.io 上可用,可以使用 cargo 安装。我们预期的原型开发入口点是 chidori-debugger
,它将我们的运行时包装在一个有用的可视化界面中。
xcode-select --install
brew install cmake
# Protobuf 是 denokv 的依赖项,我们目前依赖它
brew install protobuf
# 我们正在调查这是否有必要或是否可以移除
brew install libiconv
brew install python@3.11
# Chidori 使用 uv 来处理 python 依赖项
brew install uv
cargo install chidori-debugger
如果您更喜欢不同的 Python 解释器,您可以在安装过程中设置 PYO3_PYTHON=python3.12(或任意版本 > 3.7)来更改链接的解释器。
设置运行时环境
Chidori 与 LLM 的交互默认连接到 http://localhost:4000 ,以挂钩 LiteLLM 的代理。
如果您想使用 gpt-3.5-turbo,附带的配置文件将支持该功能。
您需要安装 pip install litellm[proxy]
以运行以下命令:
export OPENAI_API_KEY=...
litellm --config ./litellm_config.yaml
示例
以下示例展示了如何构建一个简单的代理,该代理会获取 Hacker News 的热门故事,并调用 OpenAI API 过滤出与 AI 相关的发布,然后将这些数据格式化为 markdown。
从这里开始是一个可执行的 Chidori 代理示例:
Chidori 代理可以是单个文件,也可以是一组文件,结构类似于典型的 Typescript 或 Python 项目。 以下示例是一个单文件代理。可以将其看作类似于 jupyter/iPython 笔记本的 markdown 文件。
```javascript (load_hacker_news) const axios = require('https://deno.land/x/axiod/mod.ts'); const HN_URL_TOP_STORIES = "https://hacker-news.firebaseio.com/v0/topstories.json"; function fetchStory(id) { return axios.get(`https://hacker-news.firebaseio.com/v0/item/${id}.json?print=pretty`) .then(response => response.data); } async function fetchHN() { const stories = await axios.get(HN_URL_TOP_STORIES); const storyIds = stories.data; // 仅获取前30个 const tasks = storyIds.slice(0, 30).map(id => fetchStory(id)); return Promise.all(tasks) .then(stories => { return stories.map(story => { const { title, url, score } = story; return {title, url, score}; }); }); } ``` 提示 "interpret_the_group" ```prompt (interpret_the_group) 根据以下 HackerNews 主题列表, 过滤此列表,仅保留 新的 AI 项目的发布:{{fetched_articles}} ``` 提示 "format_and_rank" ```prompt (format_and_rank) 以 markdown 格式整理此新 AI 项目列表,并按最有趣到最不有趣的顺序排名。 {{interpret_the_group}} ``` 使用一个 python 单元作为我们的入口点,演示跨语言执行: ```python articles = await fetchHN() format_and_rank(articles=articles) ```
关于
响应式运行时
Chidori 的核心是一个响应式运行时,它协调不同代理及其组件之间的交互。 Chidori 接受任意的 Python 或 JavaScript 代码,接管并执行这些代码,以允许中断和响应性。 这样,您可以在利用这些运行时行为的同时,继续使用您已经熟悉的模式。
监控与可观测性
Chidori 确保对您的代理进行全面的监控和可观测性。我们记录代理执行过程中所有函数的输入和输出,能够精确解释每个步骤的因果关系,增强调试体验并提高对系统生产行为的理解。
分支与时间旅行
借助 Chidori,您可以对系统进行快照并从该点探索不同的可能结果(分支),或将系统回滚到先前状态(时间旅行)。此功能通过提供替代路径和重新执行的机会,提高了错误处理、调试和系统的鲁棒性。
代码解释器环境
Chidori 提供了对 Python 和 JavaScript 代码解释的一流支持。您可以直接在系统中执行代码,提供快速启动、易用性和安全执行。我们正在持续努力增加更多的安全措施,以防止运行不受信任的代码,并即将支持容器化环境。
评估期间的代码生成
通过我们的执行图、状态保存和调试工具,Chidori 是一个在代理评估过程中生成代码的绝佳环境。 您可以利用它来借助 LLM 实现更通用的行为,并随着时间的推移发展您的代理。
🛣️ 路线图
短期
- 节点之间的响应式订阅
- 分支和时间旅行调试,回滚执行图
- Node.js、Python 和 Rust 支持构建和执行图
- 用于开发的简单本地向量数据库
- 添加对容器化节点的支持
中期
- 比较