Instrukt 是一个基于终端的集成式 AI 环境,旨在让用户构建、测试和指挥模块化 AI 智能体。它提供以下核心能力:
- 创建和指挥模块化 AI 智能体。
- 为问答生成文档索引。
- 创建工具并附加到任意智能体。
智能体是简单的 Python 包,可以扩展、与他人共享、附加工具,并通过文档索引增强。用户可以用自然语言指挥智能体,并且为了安全,智能体可以在安全容器(目前通过 Docker 实现)中运行,在专用的沙盒空间内执行任务。
该项目基于 Langchain、Textual 和 Chroma 构建。
主要功能包括:
- 终端界面,适合键盘操作,无需离开键盘即可指挥 AI 智能体。
- 丰富的彩色智能体输出,支持 Markdown 和源代码,得益于 Textual TUI 库。
- 可在裸机或支持 CUDA 的 Docker 容器中运行。
- 通过 SSH 和终端复用器进行远程访问。
- 设计自定义智能体和工具。
- 智能体是简单的 Python 包,可被其他用户共享和加载。
- 索引数据并让智能体检索以进行问答。
- 通过简易 UI 创建和管理索引。
- 索引创建会自动检测编程语言,并据此优化分割/分块策略。
- 模糊选择(fzf、dmenu 等)用于检索的源文档(ctrl+p)。
- 使用预定义工具集或设计自己的工具。
- 随时附加或分离工具到智能体,定制 AI 工作流。
- 集成 REPL-Prompt,用于快速与智能体交互,以及开发和测试的快速反馈循环。
- 使用自定义命令自动化重复任务。
- 内置提示/聊天历史。
- 使用 vim、emacs 或任何外部 $EDITOR 编辑消息。
- 利用 LangChain 生态系统自动化任何任务。
- 正在开发:用于与其他框架集成的可扩展 API。
- 在安全的 Docker 容器中运行智能体,确保安全和隐私。
- 使用 gVisor 运行时实现智能体的完全隔离。
- 使用内置 IPython 控制台调试和检查智能体(ctrl+d)。
- 索引可以使用 OpenAI 或本地嵌入模型创建。
- 使用 Chroma 管理索引。
- 通过索引管理 UI(按 I)创建和管理索引。
- 索引目录会自动检测编程语言,并使用针对目标语言优化的分割策略。
- 索引可以通过智能体窗口顶部的索引菜单附加到任何智能体作为检索工具。
- 智能体可以使用附加的索引进行问答。
支持的平台:
- Windows 在 WSL2 下测试。
- 目前仅支持 OpenAI。
- 使用私有本地模型是下一个里程碑。
安装与使用:
- 安装:pip install instrukt[all]
- 设置 OPENAI_API_KEY 环境变量。
- 如果配色方案有问题,导出 TERM=xterm-256color。
- 配置文件将创建在:~/.config/instrukt/instrukt.yml
- 可以在无头服务器或支持 CUDA 的 Docker 容器上运行 Instrukt。
- 注意:如果从裸容器开始,至少需要 g++ 和 libmagic。
- 开发安装:确保安装了最新版本的 poetry,设置虚拟环境,克隆仓库,运行 poetry install -E all --with dev,test。
默认智能体:
- Coding AI:编码助手。可以在任何代码库上创建索引并附加到智能体以进行 RAG(检索增强生成)。
- Chat Q&A:简单的对话智能体。
索引和嵌入:
- 索引目录并自动检测内容(参见 AutoDirLoader)。
- 检测编程语言并使用适当的分割器。
- 从 URL 加载 git 仓库。
- 加载任何网页/网站。
文档:
- 创建智能体
- 创建工具
- 索引并与文档和源代码聊天。
- 示例用例
- 教程。
注意:这是一个正在进行中的项目,预计会有 bug 和 API 变更。
许可:AGPL 许可证。