精选AI开源项目完整指南:OpenManus、AnythingLLM、Jan、Textual与DuckDB AI
概述
随着人工智能技术的快速发展,GitHub上涌现出大量优秀的AI开源项目。这些项目涵盖了从大语言模型应用、自动化代理到多模态生成等各个领域。本文将详细介绍几个精选的AI开源项目,包括OpenManus、AnythingLLM、Jan、Textual以及DuckDB AI,帮助你快速了解并上手这些强大的工具。
一、OpenManus - 通用AI代理框架
项目介绍
OpenManus是一个基于大型语言模型的通用AI代理框架,旨在实现复杂任务的自动化处理。它能够理解自然语言指令,分解任务步骤,并自主执行各种操作。该项目由Tsinghua NLP实验室开发,是目前最活跃的AI代理开源项目之一。
主要用途
- 任务自动化:自动完成复杂的多步骤任务
- Web交互:自动浏览网页、填写表单、搜索信息
- 文件操作:自动创建、编辑和管理文件
- 代码开发:辅助编写、调试和优化代码
- 数据分析:自动处理和分析数据
系统要求
操作系统:Linux/macOS/Windows
Python版本:3.10+
内存要求:最低8GB,推荐16GB+
API密钥:OpenAI/Anthropic等LLM提供商API
搭建方式
1. 环境准备
# 克隆项目
git clone https://github.com/OpenManus/AgentLab.git
cd AgentLab
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
# 或
venv\Scripts\activate # Windows
# 安装依赖
pip install -e .
2. 配置API密钥
# 创建配置文件
cp .env.example .env
# 编辑.env文件,添加API密钥
# .env内容示例:
OPENAI_API_KEY=sk-your-api-key-here
ANTHROPIC_API_KEY=your-anthropic-key
# 或设置环境变量
export OPENAI_API_KEY="sk-your-api-key"
export ANTHROPIC_API_KEY="your-anthropic-key"
3. 运行示例
<code# 启动Web代理 python -m agents.web_agent # 启动文件操作代理 python -m agents.file_agent # 使用命令行界面 python -m cli.main --task "请帮我写一个Python脚本,实现快速排序算法" # 运行测试 python -m pytest tests/ -v
4. Docker部署
# 构建镜像
docker build -t open-manus .
# 运行容器
docker run -it -e OPENAI_API_KEY=$OPENAI_API_KEY -v $(pwd)/workspace:/app/workspace open-manus
# 使用docker-compose
docker-compose up -d
核心功能演示
from openManus import Agent, Task
# 创建代理
agent = Agent(
name="ResearchAgent",
model="gpt-4",
instructions="你是一个专业的研究助手"
)
# 定义任务
task = Task(
description="搜索并整理关于量子计算的最新进展",
expected_output="一份关于量子计算的详细报告"
)
# 执行任务
result = agent.run(task)
print(result)
# 批处理任务
tasks = [
Task(description="写一个Python爬虫"),
Task(description="分析数据并生成图表"),
Task(description="创建一个Web页面")
]
results = agent.run_batch(tasks)
开源地址
GitHub仓库:https://github.com/OpenManus/AgentLab
许可证:MIT License
二、AnythingLLM - 本地AI工作空间
项目介绍
AnythingLLM是一个功能强大的本地AI工作空间应用,允许用户在本地部署和运行大语言模型,支持多种LLM后端,包括Ollama、LM Studio、OpenAI等。它提供了直观的Web界面,可以轻松管理文档、创建聊天机器人、构建知识库。
主要用途
- 本地LLM部署:完全本地运行,保护隐私
- RAG知识库:基于文档的智能问答
- 聊天机器人:创建自定义AI助手
- 多模型支持:切换不同的LLM后端
- 文档管理:上传、索引、检索文档
系统要求
操作系统:Windows/macOS/Linux
内存:最低8GB,推荐16GB+
存储:至少10GB可用空间
可选:NVIDIA GPU(加速推理)
搭建方式
1. 直接安装(推荐)
# macOS
brew install --cask anythingllm
# Windows
# 下载地址: https://anythingllm.com/download
# Linux (AppImage)
wget https://anythingllm.com/anythingllm-linux-x64.deb
sudo dpkg -i anythingllm-linux-x64.deb
2. Docker部署
# 拉取镜像
docker pull mintplexlabs/anythingllm
# 运行容器
docker run -d -p 3000:3000 -v anythingllm_storage:/app/storage -e STORAGE_DIR="/app/storage" mintplexlabs/anythingllm
# 访问地址:http://localhost:3000
3. 源码部署
# 克隆前端
git clone https://github.com/Mintplex-Labs/anything-llm.git
cd anything-llm
# 安装依赖
npm install
# 克隆后端
cd server
npm install
# 配置环境
cp .env.example .env
# 编辑.env文件
# 启动后端
npm run start
# 启动前端(新终端)
cd ..
npm run dev
4. 配置LLM后端
# 在设置中配置:
# 方式1:使用Ollama
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama2
# 方式2:使用OpenAI
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your-key
OPENAI_MODEL=gpt-4
# 方式3:使用LM Studio
LLM_PROVIDER=lmstudio
LMSTUDIO_BASE_URL=http://localhost:1234
使用流程
1. 首次启动后,浏览器访问 http://localhost:3000
2. 设置工作区名称
3. 上传文档(PDF、TXT、DOCX等)
4. 配置LLM后端(Ollama/OpenAI/LM Studio)
5. 开始对话或创建聊天机器人
# 创建RAG知识库的步骤:
# 1. 新建工作区
# 2. 上传文档到工作区
# 3. 点击"索引文档"
# 4. 开始基于文档的问答
开源地址
GitHub仓库:https://github.com/Mintplex-Labs/anything-llm
三、Jan - 本地AI平台
项目介绍
Jan是一个开源的桌面AI应用,专注于在本地设备上运行大语言模型。它提供了简洁的界面,支持多种模型格式(包括GGUF、Model Scope等),并且完全离线运行,确保数据隐私安全。
主要用途
- 本地模型运行:完全离线,保护隐私
- 模型管理:下载、切换、删除模型
- API服务:提供OpenAI兼容的API接口
- 聊天界面:直观的对话界面
- 多模型支持:Llama、Mistral等主流模型
系统要求
操作系统:Windows/macOS/Linux
内存:最低4GB,推荐8GB+
CPU:支持AVX2(现代CPU均支持)
存储:模型文件通常2-8GB
搭建方式
1. 直接安装
# macOS
brew install --cask jan
# Windows
# 下载地址: https://jan.ai/download/
# Linux (Debian/Ubuntu)
wget -O- https://github.com/janhq/jan/releases/latest/download/jan-linux-amd64.deb | sudo dpkg -i -
# Linux (Fedora)
sudo dnf install jan-linux-amd64.rpm
2. 使用NVM安装(开发者模式)
# 安装nvm(如果未安装)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 安装Node.js 18+
nvm install 18
nvm use 18
# 克隆并运行
git clone https://github.com/janhq/jan.git
cd jan
npm install
npm run build
npm run start
3. Docker部署
# 拉取镜像
docker pull ghcr.io/janhq/jan:latest
# 运行
docker run -d -p 3000:3000 -v jan_models:/root/.cache/jan -v jan_data:/root/.local/share/jan ghcr.io/janhq/jan:latest
# 访问:http://localhost:3000
4. 下载和使用模型
# Jan内置模型市场,支持一键下载:
# 1. 打开Jan应用
# 2. 点击"Model"标签
# 3. 浏览推荐模型(Llama 3、Mistral等)
# 4. 点击下载
# 5. 完成后点击"Use"
# 或手动添加GGUF模型:
# 1. 下载GGUF模型文件
# 2. 放入 ~/.cache/jan/models/ 目录
# 3. 在Jan中导入模型
# 推荐的7B模型配置:
# - 模型:Llama 3 8B Instruct
# - 上下文长度:4096
# - GPU Layers:全部(如果显存够)
5. 启用API服务
# Jan提供OpenAI兼容的API
# 启动API服务器(在设置中启用)
# 默认地址:http://localhost:1337
# API调用示例
import requests
response = requests.post(
"http://localhost:1337/v1/chat/completions",
headers={"Content-Type": "application/json"},
json={
"model": "jan-model",
"messages": [
{"role": "user", "content": "你好!"}
],
"max_tokens": 100
}
)
print(response.json())
开源地址
GitHub仓库:https://github.com/janhq/jan
官方网站:https://jan.ai/
四、Textual - 现代化终端UI框架
项目介绍
Textual是Python领域最现代化的终端UI框架,由Textualize.io开发。它提供了丰富的组件和现代的CSS样式系统,让开发者能够快速构建美观的终端应用程序。
主要用途
- 终端应用开发:构建交互式CLI应用
- 数据可视化:在终端显示图表和进度条
- 管理界面:创建系统管理工具
- TUI游戏:开发终端游戏
系统要求
Python版本:3.8+
操作系统:Windows/macOS/Linux
终端支持:支持24位颜色
搭建方式
1. pip安装
# 基本安装
pip install textual
# 安装所有功能
pip install textual[all]
# 安装开发者工具
pip install textual[dev]
2. 快速开始
# 创建第一个应用
from textual.app import App
from textual.widgets import Static
class HelloApp(App):
def compose(self):
yield Static("Hello, Textual!", id="hello")
def on_mount(self):
self.query_one("#hello", Static).styles.background = "blue"
self.query_one("#hello", Static).styles.color = "white"
if __name__ == "__main__":
app = HelloApp()
app.run()
3. 创建复杂UI
from textual.app import App, ComposeResult
from textual.containers import Grid, Vertical
from textual.widgets import Button, Header, Footer, Static, Input
class TodoApp(App):
CSS = """
Grid {
grid-size: 2;
padding: 1;
}
Button {
width: 100%;
height: 3;
}
Input {
width: 100%;
}
"""
def compose(self) -> ComposeResult:
yield Header()
yield Grid(
Input(placeholder="添加新任务...", id="task-input"),
Button("添加", id="add-btn", variant="primary"),
Static("待办事项列表", id="list"),
Static("", id="empty-msg"),
id="main"
)
yield Footer()
def on_button_pressed(self, event: Button.Pressed) -> None:
if event.button.id == "add-btn":
task_input = self.query_one("#task-input", Input)
if task_input.value:
list_widget = self.query_one("#list", Static)
list_widget.update(f"{list_widget.renderable}
- {task_input.value}")
task_input.value = ""
if __name__ == "__main__":
app = TodoApp()
app.run()
4. 创建聊天机器人UI
from textual.app import App, ComposeResult
from textual.containers import ScrollableContainer
from textual.widgets import Static, Input, Button
class ChatUI(App):
def compose(self) -> ComposeResult:
yield ScrollableContainer(
Static("🤖: 你好!有什么可以帮助你的?", id="chat-history"),
Input(placeholder="输入消息...", id="user-input"),
Button("发送", id="send-btn"),
id="chat-container"
)
def on_button_pressed(self, event: Button.Pressed) -> None:
if event.button.id == "send-btn":
self.send_message()
def on_input_submitted(self) -> None:
self.send_message()
def send_message(self):
user_input = self.query_one("#user-input", Input)
chat = self.query_one("#chat-history", Static)
chat.update(f"{chat.rendered}
👤: {user_input.value}")
user_input.value = ""
if __name__ == "__main__":
app = ChatUI()
app.run()
开源地址
GitHub仓库:https://github.com/Textualize/textual
文档地址:https://textual.textualize.io/
五、DuckDB AI - AI应用数据库
项目介绍
DuckDB AI是DuckDB数据库的AI扩展包,它集成了向量存储、相似性搜索和LLM函数调用等AI功能。这使得在数据分析和机器学习工作流中嵌入AI能力变得非常简单。
主要用途
- 向量数据库:存储和检索向量嵌入
- 相似性搜索:高效的向量相似性查询
- SQL AI函数:直接在SQL中使用LLM
- RAG应用:构建检索增强生成系统
系统要求
Python版本:3.8+
操作系统:Windows/macOS/Linux
依赖:DuckDB 0.10+
搭建方式
1. pip安装
# 基本安装
pip install duckdb
pip install duckdb-ai
# 安装向量扩展
pip install duckdb-ai[vector]
# 安装所有扩展
pip install duckdb-ai[all]
2. 基本使用
import duckdb
from duckdb_ai import openai
# 连接数据库
conn = duckdb.connect('my_database.duckdb')
# 配置OpenAI
openai(conn, api_key="your-openai-key")
# 创建向量表
conn.execute("""
CREATE TABLE documents (
id INTEGER PRIMARY KEY,
content TEXT,
embedding FLOAT[1536]
);
""")
# 插入数据
conn.execute("""
INSERT INTO documents VALUES
(1, '人工智能是模拟人类智能的技术', array[0.1, 0.2, ...]),
(2, '机器学习是AI的一个子领域', array[0.3, 0.4, ...]);
""")
# 相似性搜索
result = conn.execute("""
SELECT content, similarity(embedding,
array[0.15, 0.25, ...]) as sim
FROM documents
ORDER BY sim DESC
LIMIT 5;
""").fetchall()
print(result)
3. 使用SQL调用LLM
# 创建SQL函数
conn.execute("""
CREATE FUNCTION summarize(text_input TEXT)
RETURNS TEXT
LANGUAGE PYTHON
USING openai.complete(
model = 'gpt-3.5-turbo',
prompt = CONCAT('请用一句话总结以下内容:', text_input)
);
""")
# 调用函数
result = conn.execute("SELECT summarize('这是一段很长的文本内容...')").fetchone()
print(result[0])
# 创建问答函数
conn.execute("""
CREATE FUNCTION answer_question(context TEXT, question TEXT)
RETURNS TEXT
LANGUAGE PYTHON
USING openai.complete(
model = 'gpt-3.5-turbo',
prompt = CONCAT('根据以下上下文回答问题。
上下文:', context, '
问题:', question)
);
""")
4. RAG应用示例
import duckdb
from duckdb_ai import openai, similarity_search
# 初始化
conn = duckdb.connect('knowledge_base.duckdb')
openai(conn, api_key="your-key")
# 创建知识库表
conn.execute("""
CREATE TABLE knowledge (
id INTEGER,
title TEXT,
content TEXT,
embedding FLOAT[1536]
);
""")
# 导入文档并生成向量
def add_document(id, title, content):
# 使用OpenAI生成向量
embedding = conn.execute("""
SELECT to_vec(generate_embedding('openai', ?))
""", [content]).fetchone()[0]
conn.execute("""
INSERT INTO knowledge VALUES (?, ?, ?, ?)
""", [id, title, content, embedding])
# 相似性搜索问答
def rag_query(question):
# 1. 找到最相似的文档
similar_docs = similarity_search(
conn,
"SELECT content FROM knowledge ORDER BY embedding to_vec(generate_embedding('openai', ?)) LIMIT 3",
[question]
)
# 2. 构建上下文
context = "
".join([doc[0] for doc in similar_docs])
# 3. 生成回答
result = conn.execute("""
SELECT openai.complete(
'gpt-3.5-turbo',
CONCAT('根据以下内容回答问题:', ?, '
问题:', ?)
)
""", [context, question]).fetchone()[0]
return result
# 使用
answer = rag_query("什么是机器学习?")
print(answer)
开源地址
GitHub仓库:https://github.com/duckdb/duckdb-ai
官方文档:https://duckdb.org/docs/extensions/ai
总结
本文介绍了五个优秀的GitHub AI开源项目,每个项目都有其独特的特点和适用场景:
- OpenManus:通用AI代理框架,适合任务自动化和复杂工作流
- AnythingLLM:本地AI工作空间,适合知识管理和RAG应用
- Jan:轻量级本地LLM运行工具,适合隐私敏感场景
- Textual:现代化终端UI框架,适合CLI应用开发
- DuckDB AI:数据库AI扩展,适合数据分析和RAG系统
选择合适的工具取决于你的具体需求、技术栈和硬件条件。建议从简单的项目开始,逐步探索更复杂的应用。
参考资源汇总
| 项目 | GitHub地址 | 许可证 |
|---|---|---|
| OpenManus | github.com/OpenManus/AgentLab | MIT |
| AnythingLLM | github.com/Mintplex-Labs/anything-llm | MIT |
| Jan | github.com/janhq/jan | MIT |
| Textual | github.com/Textualize/textual | MIT |
| DuckDB AI | github.com/duckdb/duckdb-ai | MIT |






