Metadata-Version: 2.4
Name: aigility
Version: 0.0.7
Summary: A modern Python ADK - Agent Development Kit for building AI agents with LangGraph and LangChain. This library provides a comprehensive, type-safe framework for developing intelligent agents with chat, workflow, memory, and knowledge management capabilities.
Author-email: AIGility Cloud Innovation <contact@aigility.com>
Maintainer-email: AIGility Cloud Innovation <contact@aigility.com>
License: MIT
Project-URL: Homepage, https://github.com/AIGility-Cloud-Innovation/aigility
Project-URL: Documentation, https://aigility.readthedocs.io
Project-URL: Repository, https://github.com/AIGility-Cloud-Innovation/aigility
Project-URL: Issues, https://github.com/AIGility-Cloud-Innovation/aigility/issues
Project-URL: Changelog, https://github.com/AIGility-Cloud-Innovation/aigility/blob/main/CHANGELOG.md
Keywords: adk,agent,langchain,langgraph,workflow,chat,rag,memory,ai,llm
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.24.0
Requires-Dist: httpx-sse>=0.4.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pydantic-settings>=2.0.0
Requires-Dist: typing-extensions>=4.0.0
Requires-Dist: langchain-core>=0.1.0
Requires-Dist: langgraph>=0.0.20
Requires-Dist: langchain-openai>=0.0.5
Requires-Dist: pyyaml>=6.0
Provides-Extra: anthropic
Requires-Dist: langchain-anthropic>=0.1.0; extra == "anthropic"
Provides-Extra: rag
Requires-Dist: langchain-community>=0.0.20; extra == "rag"
Requires-Dist: langchain-text-splitters>=0.1.0; extra == "rag"
Provides-Extra: embedding-huggingface
Requires-Dist: sentence-transformers>=2.2.0; extra == "embedding-huggingface"
Requires-Dist: langchain-huggingface>=0.0.1; extra == "embedding-huggingface"
Provides-Extra: embedding-dashscope
Requires-Dist: openai>=1.0.0; extra == "embedding-dashscope"
Provides-Extra: vectorstore-chroma
Requires-Dist: chromadb>=0.4.0; extra == "vectorstore-chroma"
Requires-Dist: langchain-chroma>=0.1.0; extra == "vectorstore-chroma"
Provides-Extra: vectorstore-faiss
Requires-Dist: faiss-cpu>=1.7.0; extra == "vectorstore-faiss"
Requires-Dist: langchain-community>=0.0.20; extra == "vectorstore-faiss"
Provides-Extra: vectorstore-milvus
Requires-Dist: pymilvus>=2.3.0; extra == "vectorstore-milvus"
Requires-Dist: langchain-milvus>=0.1.0; extra == "vectorstore-milvus"
Provides-Extra: vectorstore-qdrant
Requires-Dist: qdrant-client>=1.7.0; extra == "vectorstore-qdrant"
Requires-Dist: langchain-community>=0.0.20; extra == "vectorstore-qdrant"
Provides-Extra: doc-pdf
Requires-Dist: pdfplumber>=0.9.0; extra == "doc-pdf"
Provides-Extra: doc-word
Requires-Dist: python-docx>=0.8.0; extra == "doc-word"
Provides-Extra: doc-excel
Requires-Dist: pandas>=2.0.0; extra == "doc-excel"
Requires-Dist: openpyxl>=3.1.0; extra == "doc-excel"
Provides-Extra: nlp
Requires-Dist: jieba>=0.42.0; extra == "nlp"
Requires-Dist: scikit-learn>=1.0.0; extra == "nlp"
Provides-Extra: timem
Requires-Dist: timem-ai>=0.1.0; extra == "timem"
Provides-Extra: timem-rag
Requires-Dist: aigility[timem]; extra == "timem-rag"
Requires-Dist: aigility[doc-pdf]; extra == "timem-rag"
Requires-Dist: aigility[doc-word]; extra == "timem-rag"
Requires-Dist: aigility[doc-excel]; extra == "timem-rag"
Requires-Dist: aigility[nlp]; extra == "timem-rag"
Provides-Extra: zai
Requires-Dist: zai-sdk>=0.2.0; extra == "zai"
Provides-Extra: rag-local
Requires-Dist: aigility[rag]; extra == "rag-local"
Requires-Dist: aigility[embedding-huggingface]; extra == "rag-local"
Requires-Dist: aigility[vectorstore-chroma]; extra == "rag-local"
Requires-Dist: aigility[doc-pdf]; extra == "rag-local"
Requires-Dist: aigility[doc-word]; extra == "rag-local"
Requires-Dist: aigility[doc-excel]; extra == "rag-local"
Requires-Dist: aigility[nlp]; extra == "rag-local"
Provides-Extra: rag-qdrant
Requires-Dist: aigility[rag]; extra == "rag-qdrant"
Requires-Dist: aigility[vectorstore-qdrant]; extra == "rag-qdrant"
Requires-Dist: aigility[doc-pdf]; extra == "rag-qdrant"
Requires-Dist: aigility[doc-word]; extra == "rag-qdrant"
Requires-Dist: aigility[doc-excel]; extra == "rag-qdrant"
Requires-Dist: aigility[nlp]; extra == "rag-qdrant"
Provides-Extra: all
Requires-Dist: aigility[anthropic]; extra == "all"
Requires-Dist: aigility[rag-local]; extra == "all"
Requires-Dist: aigility[timem-rag]; extra == "all"
Requires-Dist: aigility[zai]; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=22.0.0; extra == "dev"
Requires-Dist: isort>=5.0.0; extra == "dev"
Requires-Dist: flake8>=5.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: pre-commit>=2.20.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=5.0.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
Requires-Dist: myst-parser>=0.18.0; extra == "docs"
Dynamic: license-file

# AIGility ADK - Agent Development Kit

基于 LangGraph/LangChain 的智能体开发框架，提供开箱即用的 RAG、记忆管理、对话流等能力。

## 特性

- **RAG 检索增强生成**
  - 基础 RAG 服务：文档摄取、向量化、语义检索
  - 工作流模式 RAG：基于 LangGraph 的可组合 RAG 工作流
  - 多 Embedding 支持：DashScope、HuggingFace、ZhipuAI 等
  - 多向量存储支持：Chroma、FAISS、Milvus、Qdrant 等
  - 太忆（TiMem）RAG 云服务集成（ChatFlow 工具调用）

- **记忆管理**
  - 持久化对话历史
  - 语义记忆检索
  - 可扩展的记忆存储（已集成 TiMem Memory Provider）

- **对话流管理**
  - 基于 LangGraph 的对话流编排
  - 工具调用支持
  - 状态管理

- **工作流引擎**
  - 可视化工作流构建
  - 节点编排
  - 条件分支和循环

## 安装

### 核心安装（推荐）

只安装核心依赖，包含聊天、工作流、内存管理等基础功能：

```bash
pip install aigility
```

### 完整安装

如需使用 RAG、向量存储、文档处理等高级功能：

```bash
# 安装所有可选功能
pip install "aigility[all]"

# 或者只安装需要的模块
pip install "aigility[rag-local]"     # 本地 RAG (HuggingFace + Chroma)
pip install "aigility[rag-qdrant]"    # Qdrant RAG
pip install "aigility[timem]"         # 太忆 RAG 服务
pip install "aigility[anthropic]"     # Anthropic LLM 支持
```

### 可选功能模块

| 模块 | 说明 | 安装命令 |
|------|------|----------|
| `anthropic` | Anthropic Claude 支持 | `pip install "aigility[anthropic]"` |
| `rag-local` | 本地 RAG (HuggingFace + Chroma) | `pip install "aigility[rag-local]"` |
| `rag-qdrant` | Qdrant RAG | `pip install "aigility[rag-qdrant]"` |
| `timem` | 太忆 RAG 服务 | `pip install "aigility[timem]"` |
| `timem-rag` | 太忆 RAG 完整功能 (含文档处理) | `pip install "aigility[timem-rag]"` |
| `zai` | 在智 embedding 服务 | `pip install "aigility[zai]"` |
| `all` | 所有功能 | `pip install "aigility[all]"` |

**注意**：`rag-local` 会下载 HuggingFace 模型（约 500MB-2GB），安装时间较长

## 快速开始

### RAG 基础使用

```python
from aigility.rag import RAGService, RAGConfig, EmbeddingConfig, VectorStoreConfig

# 配置 RAG 服务
config = RAGConfig(
    embedding=EmbeddingConfig(provider="dashscope", api_key="your-api-key"),
    vector_store=VectorStoreConfig(provider="chroma", persist_path="./my_db")
)

# 初始化服务
rag_service = RAGService(config=config)

# 添加文档
rag_service.add_file("document.pdf")

# 检索相关内容
results = rag_service.search("什么是机器学习？")
print(results)
```

### RAG 工作流模式

```python
from aigility.rag import RAGService, create_rag_workflow
from langchain_openai import ChatOpenAI

# 初始化 RAG 服务和 LLM
rag_service = RAGService()
llm = ChatOpenAI(model="gpt-4")

# 创建工作流
workflow = create_rag_workflow(rag_service, llm)

# 执行查询
result = workflow.invoke({
    "query": "什么是机器学习？",
    "messages": []
})

print(result["answer"])
```

### 客户端使用

```python
from aigility import ADKClient, create_client

# 创建客户端
client = create_client(
    llm_provider="openai",
    llm_api_key="your-api-key",
    memory_api_key="your-memory-api-key",
)

# 使用记忆
memory = client.memory
await memory.add(
    messages=[{"role": "user", "content": "Hello"}],
    user_id="user123",
    character_id="assistant"
)

# 创建对话智能体
agent = client.create_chat_agent(name="my_agent")
```

## 文档

- [开发指南](DEVELOPMENT.md) - 详细的开发文档和架构说明
- [示例代码](examples/) - 各种使用场景的示例代码
- [Provider 使用文档与配置示例](aigility/docs/readme.md) - LLM/Embedding/向量库/Memory Provider 说明
- [太忆(TiMem) RAG 集成指南](docs/timem_rag_integration.md) - ChatFlow 中的 RAG 工具接入

## 项目结构

```
aigility/
├── core/           # 核心配置和类型
├── memory/         # 记忆管理
├── chat/           # 基础对话
├── chatflow/       # 对话流管理
├── workflow/       # 工作流引擎
├── rag/            # RAG 检索增强生成
│   ├── service.py  # RAG 服务
│   ├── workflow.py # RAG 工作流
│   ├── client.py   # TiMem RAG 客户端
│   ├── embeddings/ # Embedding 模型
│   ├── vector_stores/ # 向量存储
│   └── ingestion.py # 文档摄取
├── adp/            # ADP 服务客户端
└── client.py       # 主客户端
```

## 技术栈

- **LangChain**: 基础对话能力
- **LangGraph**: 对话流和工作流编排
- **Chroma/FAISS/Milvus**: 向量存储
- **DashScope/HuggingFace**: Embedding 模型
- **Qdrant**: 向量存储
- **TiMem**: Memory/RAG 云服务

## 许可证

MIT License
