Metadata-Version: 2.4
Name: chujie-llm-toolkit
Version: 0.1.0
Summary: LLM Toolkit
Author: chujieHong
License-Expression: MIT
Keywords: llm,cli,ai
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: anthropic
Requires-Dist: click
Requires-Dist: openai
Requires-Dist: python-dotenv
Requires-Dist: pyyaml
Requires-Dist: tenacity>=9.1.4

# LLM Toolkit

一个 Python 命令行工具，统一调用多个大模型 API，支持流式输出、Token 统计、多 Provider 切换。

## ✨ 功能特性

- 🚀 **多 Provider 统一接口**：支持 MiniMax、DeepSeek、Anthropic（Mock），新增 Provider 只需写一个类
- 💬 **流式输出**：边生成边打印，字一个字出来
- ⏱️ **超时 +错误重试**：网络错误自动重试，超时 30 秒
- 📝 **日志**：自动记录调用模型和耗时
- 🔌 **CLI 设计**：基于 Click，支持参数和子命令

## 📁 项目结构

```
src/llm_toolkit/
├── __init__.py
├── cli/
│   ├── __init__.py
│   └── main.py             # CLI 入口
├── providers/              # 多 Provider 支持
│   ├── __init__.py         # 注册表
│   ├── base.py             # 抽象基类
│   ├── minimax.py          # MiniMax Provider
│   ├── deepseek.py         # DeepSeek Provider
│   └── anthropic.py        # Anthropic Provider（Mock）
├── client.py               # 预留：统一 LLMClient（Day 6+）
├── models.py               # 预留：请求/响应模型
└── config.py               # 预留：配置加载
```

## 🚀 安装

### 1. 克隆仓库

```bash
git clone <repo-url>
cd m1
```

### 2. 安装依赖

需要先安装 [uv](https://astral.sh/uv/)。

```bash
uv sync
```

## ⚙️ 配置

在项目根目录创建 `.env` 文件：

```env
# MiniMax（国内节点）
MINIMAX_API_KEY=sk-cp-xxx

# DeepSeek
DEEPSEEK_API_KEY=sk-xxx# Anthropic（可选，目前未启用）
# ANTHROPIC_API_KEY=sk-ant-xxx
```

## 📖 使用

### 默认 Provider（MiniMax）

```bash
llm chat "你好"
```

### 切换 Provider

```bash
llm chat --provider deepseek "你好"
```

### 流式输出

```bash
llm chat --stream "写一首关于 Python 的诗"
```

### 通过环境变量设置默认 Provider

```bash
# PowerShell
$env:LLM_PROVIDER="deepseek"
llm chat "你好"

# Bash
LLM_PROVIDER=deepseek llm chat "你好"
```

### 查看帮助

```bash
llm --help
llm chat --help
```

## 🧪 开发

### 运行测试

```bash
uv run pytest
```

### 添加新 Provider

1. 在 `src/agent/providers/` 下新建 `<provider>.py`
2. 继承 `BaseProvider`，实现 `create_client()`
3. 在 `providers/__init__.py` 注册

示例：

```python
from .base import BaseProvider
from openai import OpenAI

class MyProvider(BaseProvider):
    name = "myprovider"
    model = "my-model"
    
    def create_client(self) -> OpenAI:
        api_key = os.getenv("MY_API_KEY")
        return OpenAI(api_key=api_key, base_url="https://api.my.com/v1")
```

## ⚠️ 已知限制

- **Anthropic Provider 暂未实现**（无 API Key，需要时再填真实代码）
- **OpenAI Provider 未集成**（无 API Key，需要时按上面示例添加）
- 当前只有 `chat` 命令，后续会加 `conversation`（历史）、`prompt`（模板）

## 📝许可证

MIT
