精选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

官方网站:https://anythingllm.com/

三、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

发表回复

后才能评论