autocoder-rag-sdk


Nameautocoder-rag-sdk JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryPython SDK for AutoCoder RAG - 便于在Python代码中调用auto-coder.rag run功能
upload_time2025-10-21 03:01:15
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT License Copyright (c) 2024 AutoCoder Team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords ai api autocoder document-qa python rag sdk
VCS
bugtrack_url
requirements contextlib2 ninja jinja2 rich paramiko tqdm loguru pyjava fastapi uvicorn retrying zhipuai dashscope tiktoken tabulate jupyter_client prompt-toolkit tokenizers aiofiles readerwriterlock byzerllm patch diff_match_patch GitPython openai anthropic google-generativeai protobuf azure-cognitiveservices-speech real_agent duckdb python-docx docx2txt pdf2image docx2pdf pypdf pyperclip colorama pylint reportlab pathspec openpyxl python-pptx watchfiles cairosvg matplotlib mammoth markdownify pdfminer.six puremagic pydub youtube-transcript-api SpeechRecognition pathvalidate pexpect mcp setuptools filelock argcomplete
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # AutoCoder RAG SDK for Python

一个便于在Python代码中调用`auto-coder.rag run`功能的SDK,用于文档问答和检索增强生成。

## 特性

- 🚀 **易于使用**: 提供简洁直观的API接口,3行代码即可开始
- 📡 **流式处理**: 支持实时流式输出答案,即时获取响应
- 🛠 **完整配置**: 支持所有auto-coder.rag run命令行选项
- 📦 **零依赖**: 仅依赖Python标准库,无第三方依赖
- 🐍 **类型提示**: 完整的类型提示支持,IDE友好
- 🎯 **便捷方法**: 提供 `quick_query()` 等简化接口
- 🔧 **上下文管理器**: 支持 `with` 语句,自动资源管理
- 📊 **结构化消息**: 支持 Message 对象,精确控制不同类型的消息

## 前置要求

- Python 3.7+
- `auto-coder.rag` 命令已安装并在 PATH 中

检查命令是否可用:
```bash
which auto-coder.rag
auto-coder.rag --help
```

## 安装

```bash
cd rag-sdks/python
pip install -e .
```

## 快速开始

### 基础用法

```python
from autocoder_rag_sdk import AutoCoderRAGClient

# 方式1: 最简单 - 只提供文档目录
client = AutoCoderRAGClient(doc_dir="/path/to/docs")
answer = client.query("如何使用这个项目?")
print(answer)

# 方式2: 快捷配置 - doc_dir + 其他参数(推荐)⭐
client = AutoCoderRAGClient(
    doc_dir="/path/to/docs",
    agentic=True,
    timeout=600
)
answer = client.quick_query("如何使用?")
print(answer)
```

### 流式输出

```python
from autocoder_rag_sdk import AutoCoderRAGClient

client = AutoCoderRAGClient(doc_dir="/path/to/docs")

# 流式获取答案
for chunk in client.query_stream("这个项目的主要功能是什么?"):
    print(chunk, end="", flush=True)
```

### 结构化消息处理

```python
from autocoder_rag_sdk import AutoCoderRAGClient, Message, MessageType, StageType

client = AutoCoderRAGClient(doc_dir="/path/to/docs")

# 使用 Message 对象精确控制消息处理
for message in client.query_messages("如何使用?"):
    if message.is_content():
        # 只输出内容
        print(message.content, end="", flush=True)
    elif message.is_stage():
        # 显示处理阶段
        print(f"\n[{message.stage_type.value}] {message.message}")
    elif message.is_retrieval_stage():
        print(f"正在检索: {message.message}")
    elif message.is_generation_stage():
        print(f"正在生成: {message.message}")
```

### 获取上下文信息

```python
from autocoder_rag_sdk import AutoCoderRAGClient, RAGQueryOptions

client = AutoCoderRAGClient(doc_dir="/path/to/docs")

# 查询并获取上下文
response = client.query_with_contexts("如何安装?")

print(f"答案: {response.answer}")
print(f"使用的上下文数量: {len(response.contexts)}")
for i, ctx in enumerate(response.contexts):
    print(f"上下文 {i+1}: {ctx[:100]}...")
```

### 高级配置

```python
from autocoder_rag_sdk import AutoCoderRAGClient, RAGConfig, RAGQueryOptions

# 详细配置
config = RAGConfig(
    doc_dir="/path/to/docs",
    model="v3_chat",
    agentic=False,  # 使用 LongContextRAG
    product_mode="lite",  # lite 模式
    timeout=600,  # 全局超时10分钟
    rag_context_window_limit=56000,
    enable_hybrid_index=True,
)

client = AutoCoderRAGClient(config=config)

# 查询选项
options = RAGQueryOptions(
    output_format="text",
    agentic=True,  # 本次查询使用 AgenticRAG
    timeout=900,  # 本次查询超时15分钟
)

answer = client.query("项目架构是什么?", options)
print(answer)
```

### 超时配置

```python
# 全局超时设置
config = RAGConfig(doc_dir="./docs", timeout=600)  # 10分钟
client = AutoCoderRAGClient(config=config)

# 单次查询覆盖超时
options = RAGQueryOptions(timeout=900)  # 本次15分钟
answer = client.query("复杂问题", options)
```

## API 文档

### AutoCoderRAGClient

主要的客户端类。

```python
class AutoCoderRAGClient:
    def __init__(self, config: Optional[RAGConfig] = None, doc_dir: Optional[str] = None)
    def query(self, question: str, options: Optional[RAGQueryOptions] = None) -> str
    def query_stream(self, question: str, options: Optional[RAGQueryOptions] = None) -> Generator[str, None, None]
    def query_with_contexts(self, question: str, options: Optional[RAGQueryOptions] = None) -> RAGResponse
    def get_version(self) -> str
    def check_availability(self) -> bool
```

### RAGConfig

全局配置类。

```python
@dataclass
class RAGConfig:
    doc_dir: str  # 文档目录(必需)
    model: str = "v3_chat"  # 模型名称
    agentic: bool = False  # 是否使用 AgenticRAG
    product_mode: str = "lite"  # lite 或 pro
    rag_context_window_limit: int = 56000
    full_text_ratio: float = 0.7
    segment_ratio: float = 0.2
    # ... 更多参数见源码
```

### RAGQueryOptions

单次查询选项。

```python
@dataclass
class RAGQueryOptions:
    output_format: str = "text"  # text, json, stream-json
    agentic: Optional[bool] = None  # 覆盖全局配置
    product_mode: Optional[str] = None  # 覆盖全局配置
    model: Optional[str] = None  # 覆盖全局配置
```

### RAGResponse

查询响应对象。

```python
@dataclass
class RAGResponse:
    success: bool  # 是否成功
    answer: str  # 答案内容
    contexts: List[str]  # 使用的上下文
    error: Optional[str]  # 错误信息
    metadata: dict  # 元数据
```

## 示例

查看 `examples/` 目录中的完整示例:

- `basic_usage.py` - 基础用法演示
- `stream_usage.py` - 流式输出演示
- `advanced_usage.py` - 高级配置演示

运行示例:

```bash
python examples/basic_usage.py
python examples/stream_usage.py
```

## 错误处理

```python
from autocoder_rag_sdk import AutoCoderRAGClient, RAGError, ValidationError, ExecutionError

client = AutoCoderRAGClient(doc_dir="/path/to/docs")

try:
    answer = client.query("问题")
    print(answer)
except ValidationError as e:
    print(f"参数验证失败: {e}")
except ExecutionError as e:
    print(f"执行失败: {e} (退出码: {e.exit_code})")
except RAGError as e:
    print(f"RAG错误: {e}")
```

## 许可证

MIT License - 详见 LICENSE 文件。


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "autocoder-rag-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "AutoCoder Team <support@autocoder.com>",
    "keywords": "ai, api, autocoder, document-qa, python, rag, sdk",
    "author": null,
    "author_email": "AutoCoder Team <support@autocoder.com>",
    "download_url": "https://files.pythonhosted.org/packages/c4/05/522ae615b4af69cb1b963c3a3ea43378f0c5ca90003909da4a5db323826b/autocoder_rag_sdk-0.0.2.tar.gz",
    "platform": null,
    "description": "# AutoCoder RAG SDK for Python\n\n\u4e00\u4e2a\u4fbf\u4e8e\u5728Python\u4ee3\u7801\u4e2d\u8c03\u7528`auto-coder.rag run`\u529f\u80fd\u7684SDK\uff0c\u7528\u4e8e\u6587\u6863\u95ee\u7b54\u548c\u68c0\u7d22\u589e\u5f3a\u751f\u6210\u3002\n\n## \u7279\u6027\n\n- \ud83d\ude80 **\u6613\u4e8e\u4f7f\u7528**: \u63d0\u4f9b\u7b80\u6d01\u76f4\u89c2\u7684API\u63a5\u53e3\uff0c3\u884c\u4ee3\u7801\u5373\u53ef\u5f00\u59cb\n- \ud83d\udce1 **\u6d41\u5f0f\u5904\u7406**: \u652f\u6301\u5b9e\u65f6\u6d41\u5f0f\u8f93\u51fa\u7b54\u6848\uff0c\u5373\u65f6\u83b7\u53d6\u54cd\u5e94\n- \ud83d\udee0 **\u5b8c\u6574\u914d\u7f6e**: \u652f\u6301\u6240\u6709auto-coder.rag run\u547d\u4ee4\u884c\u9009\u9879\n- \ud83d\udce6 **\u96f6\u4f9d\u8d56**: \u4ec5\u4f9d\u8d56Python\u6807\u51c6\u5e93\uff0c\u65e0\u7b2c\u4e09\u65b9\u4f9d\u8d56\n- \ud83d\udc0d **\u7c7b\u578b\u63d0\u793a**: \u5b8c\u6574\u7684\u7c7b\u578b\u63d0\u793a\u652f\u6301\uff0cIDE\u53cb\u597d\n- \ud83c\udfaf **\u4fbf\u6377\u65b9\u6cd5**: \u63d0\u4f9b `quick_query()` \u7b49\u7b80\u5316\u63a5\u53e3\n- \ud83d\udd27 **\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668**: \u652f\u6301 `with` \u8bed\u53e5\uff0c\u81ea\u52a8\u8d44\u6e90\u7ba1\u7406\n- \ud83d\udcca **\u7ed3\u6784\u5316\u6d88\u606f**: \u652f\u6301 Message \u5bf9\u8c61\uff0c\u7cbe\u786e\u63a7\u5236\u4e0d\u540c\u7c7b\u578b\u7684\u6d88\u606f\n\n## \u524d\u7f6e\u8981\u6c42\n\n- Python 3.7+\n- `auto-coder.rag` \u547d\u4ee4\u5df2\u5b89\u88c5\u5e76\u5728 PATH \u4e2d\n\n\u68c0\u67e5\u547d\u4ee4\u662f\u5426\u53ef\u7528\uff1a\n```bash\nwhich auto-coder.rag\nauto-coder.rag --help\n```\n\n## \u5b89\u88c5\n\n```bash\ncd rag-sdks/python\npip install -e .\n```\n\n## \u5feb\u901f\u5f00\u59cb\n\n### \u57fa\u7840\u7528\u6cd5\n\n```python\nfrom autocoder_rag_sdk import AutoCoderRAGClient\n\n# \u65b9\u5f0f1: \u6700\u7b80\u5355 - \u53ea\u63d0\u4f9b\u6587\u6863\u76ee\u5f55\nclient = AutoCoderRAGClient(doc_dir=\"/path/to/docs\")\nanswer = client.query(\"\u5982\u4f55\u4f7f\u7528\u8fd9\u4e2a\u9879\u76ee?\")\nprint(answer)\n\n# \u65b9\u5f0f2: \u5feb\u6377\u914d\u7f6e - doc_dir + \u5176\u4ed6\u53c2\u6570\uff08\u63a8\u8350\uff09\u2b50\nclient = AutoCoderRAGClient(\n    doc_dir=\"/path/to/docs\",\n    agentic=True,\n    timeout=600\n)\nanswer = client.quick_query(\"\u5982\u4f55\u4f7f\u7528?\")\nprint(answer)\n```\n\n### \u6d41\u5f0f\u8f93\u51fa\n\n```python\nfrom autocoder_rag_sdk import AutoCoderRAGClient\n\nclient = AutoCoderRAGClient(doc_dir=\"/path/to/docs\")\n\n# \u6d41\u5f0f\u83b7\u53d6\u7b54\u6848\nfor chunk in client.query_stream(\"\u8fd9\u4e2a\u9879\u76ee\u7684\u4e3b\u8981\u529f\u80fd\u662f\u4ec0\u4e48?\"):\n    print(chunk, end=\"\", flush=True)\n```\n\n### \u7ed3\u6784\u5316\u6d88\u606f\u5904\u7406\n\n```python\nfrom autocoder_rag_sdk import AutoCoderRAGClient, Message, MessageType, StageType\n\nclient = AutoCoderRAGClient(doc_dir=\"/path/to/docs\")\n\n# \u4f7f\u7528 Message \u5bf9\u8c61\u7cbe\u786e\u63a7\u5236\u6d88\u606f\u5904\u7406\nfor message in client.query_messages(\"\u5982\u4f55\u4f7f\u7528?\"):\n    if message.is_content():\n        # \u53ea\u8f93\u51fa\u5185\u5bb9\n        print(message.content, end=\"\", flush=True)\n    elif message.is_stage():\n        # \u663e\u793a\u5904\u7406\u9636\u6bb5\n        print(f\"\\n[{message.stage_type.value}] {message.message}\")\n    elif message.is_retrieval_stage():\n        print(f\"\u6b63\u5728\u68c0\u7d22: {message.message}\")\n    elif message.is_generation_stage():\n        print(f\"\u6b63\u5728\u751f\u6210: {message.message}\")\n```\n\n### \u83b7\u53d6\u4e0a\u4e0b\u6587\u4fe1\u606f\n\n```python\nfrom autocoder_rag_sdk import AutoCoderRAGClient, RAGQueryOptions\n\nclient = AutoCoderRAGClient(doc_dir=\"/path/to/docs\")\n\n# \u67e5\u8be2\u5e76\u83b7\u53d6\u4e0a\u4e0b\u6587\nresponse = client.query_with_contexts(\"\u5982\u4f55\u5b89\u88c5?\")\n\nprint(f\"\u7b54\u6848: {response.answer}\")\nprint(f\"\u4f7f\u7528\u7684\u4e0a\u4e0b\u6587\u6570\u91cf: {len(response.contexts)}\")\nfor i, ctx in enumerate(response.contexts):\n    print(f\"\u4e0a\u4e0b\u6587 {i+1}: {ctx[:100]}...\")\n```\n\n### \u9ad8\u7ea7\u914d\u7f6e\n\n```python\nfrom autocoder_rag_sdk import AutoCoderRAGClient, RAGConfig, RAGQueryOptions\n\n# \u8be6\u7ec6\u914d\u7f6e\nconfig = RAGConfig(\n    doc_dir=\"/path/to/docs\",\n    model=\"v3_chat\",\n    agentic=False,  # \u4f7f\u7528 LongContextRAG\n    product_mode=\"lite\",  # lite \u6a21\u5f0f\n    timeout=600,  # \u5168\u5c40\u8d85\u65f610\u5206\u949f\n    rag_context_window_limit=56000,\n    enable_hybrid_index=True,\n)\n\nclient = AutoCoderRAGClient(config=config)\n\n# \u67e5\u8be2\u9009\u9879\noptions = RAGQueryOptions(\n    output_format=\"text\",\n    agentic=True,  # \u672c\u6b21\u67e5\u8be2\u4f7f\u7528 AgenticRAG\n    timeout=900,  # \u672c\u6b21\u67e5\u8be2\u8d85\u65f615\u5206\u949f\n)\n\nanswer = client.query(\"\u9879\u76ee\u67b6\u6784\u662f\u4ec0\u4e48?\", options)\nprint(answer)\n```\n\n### \u8d85\u65f6\u914d\u7f6e\n\n```python\n# \u5168\u5c40\u8d85\u65f6\u8bbe\u7f6e\nconfig = RAGConfig(doc_dir=\"./docs\", timeout=600)  # 10\u5206\u949f\nclient = AutoCoderRAGClient(config=config)\n\n# \u5355\u6b21\u67e5\u8be2\u8986\u76d6\u8d85\u65f6\noptions = RAGQueryOptions(timeout=900)  # \u672c\u6b2115\u5206\u949f\nanswer = client.query(\"\u590d\u6742\u95ee\u9898\", options)\n```\n\n## API \u6587\u6863\n\n### AutoCoderRAGClient\n\n\u4e3b\u8981\u7684\u5ba2\u6237\u7aef\u7c7b\u3002\n\n```python\nclass AutoCoderRAGClient:\n    def __init__(self, config: Optional[RAGConfig] = None, doc_dir: Optional[str] = None)\n    def query(self, question: str, options: Optional[RAGQueryOptions] = None) -> str\n    def query_stream(self, question: str, options: Optional[RAGQueryOptions] = None) -> Generator[str, None, None]\n    def query_with_contexts(self, question: str, options: Optional[RAGQueryOptions] = None) -> RAGResponse\n    def get_version(self) -> str\n    def check_availability(self) -> bool\n```\n\n### RAGConfig\n\n\u5168\u5c40\u914d\u7f6e\u7c7b\u3002\n\n```python\n@dataclass\nclass RAGConfig:\n    doc_dir: str  # \u6587\u6863\u76ee\u5f55\uff08\u5fc5\u9700\uff09\n    model: str = \"v3_chat\"  # \u6a21\u578b\u540d\u79f0\n    agentic: bool = False  # \u662f\u5426\u4f7f\u7528 AgenticRAG\n    product_mode: str = \"lite\"  # lite \u6216 pro\n    rag_context_window_limit: int = 56000\n    full_text_ratio: float = 0.7\n    segment_ratio: float = 0.2\n    # ... \u66f4\u591a\u53c2\u6570\u89c1\u6e90\u7801\n```\n\n### RAGQueryOptions\n\n\u5355\u6b21\u67e5\u8be2\u9009\u9879\u3002\n\n```python\n@dataclass\nclass RAGQueryOptions:\n    output_format: str = \"text\"  # text, json, stream-json\n    agentic: Optional[bool] = None  # \u8986\u76d6\u5168\u5c40\u914d\u7f6e\n    product_mode: Optional[str] = None  # \u8986\u76d6\u5168\u5c40\u914d\u7f6e\n    model: Optional[str] = None  # \u8986\u76d6\u5168\u5c40\u914d\u7f6e\n```\n\n### RAGResponse\n\n\u67e5\u8be2\u54cd\u5e94\u5bf9\u8c61\u3002\n\n```python\n@dataclass\nclass RAGResponse:\n    success: bool  # \u662f\u5426\u6210\u529f\n    answer: str  # \u7b54\u6848\u5185\u5bb9\n    contexts: List[str]  # \u4f7f\u7528\u7684\u4e0a\u4e0b\u6587\n    error: Optional[str]  # \u9519\u8bef\u4fe1\u606f\n    metadata: dict  # \u5143\u6570\u636e\n```\n\n## \u793a\u4f8b\n\n\u67e5\u770b `examples/` \u76ee\u5f55\u4e2d\u7684\u5b8c\u6574\u793a\u4f8b\uff1a\n\n- `basic_usage.py` - \u57fa\u7840\u7528\u6cd5\u6f14\u793a\n- `stream_usage.py` - \u6d41\u5f0f\u8f93\u51fa\u6f14\u793a\n- `advanced_usage.py` - \u9ad8\u7ea7\u914d\u7f6e\u6f14\u793a\n\n\u8fd0\u884c\u793a\u4f8b\uff1a\n\n```bash\npython examples/basic_usage.py\npython examples/stream_usage.py\n```\n\n## \u9519\u8bef\u5904\u7406\n\n```python\nfrom autocoder_rag_sdk import AutoCoderRAGClient, RAGError, ValidationError, ExecutionError\n\nclient = AutoCoderRAGClient(doc_dir=\"/path/to/docs\")\n\ntry:\n    answer = client.query(\"\u95ee\u9898\")\n    print(answer)\nexcept ValidationError as e:\n    print(f\"\u53c2\u6570\u9a8c\u8bc1\u5931\u8d25: {e}\")\nexcept ExecutionError as e:\n    print(f\"\u6267\u884c\u5931\u8d25: {e} (\u9000\u51fa\u7801: {e.exit_code})\")\nexcept RAGError as e:\n    print(f\"RAG\u9519\u8bef: {e}\")\n```\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License - \u8be6\u89c1 LICENSE \u6587\u4ef6\u3002\n\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2024 AutoCoder Team\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "Python SDK for AutoCoder RAG - \u4fbf\u4e8e\u5728Python\u4ee3\u7801\u4e2d\u8c03\u7528auto-coder.rag run\u529f\u80fd",
    "version": "0.0.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/allwefantasy/auto-coder/issues",
        "Documentation": "https://github.com/allwefantasy/auto-coder/tree/master/rag-sdks/python",
        "Homepage": "https://github.com/allwefantasy/auto-coder",
        "Repository": "https://github.com/allwefantasy/auto-coder"
    },
    "split_keywords": [
        "ai",
        " api",
        " autocoder",
        " document-qa",
        " python",
        " rag",
        " sdk"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "372c97f4fbbf1d4a6d4bfbc1e356d2fb60a2080f3e71db964c718b9031015eae",
                "md5": "eb3b77217f015332ef86a85e2314341a",
                "sha256": "3d83c40c98398e72052242cb75c1f3ed0d78909bd7cb04f7330fac3dbdd8922a"
            },
            "downloads": -1,
            "filename": "autocoder_rag_sdk-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "eb3b77217f015332ef86a85e2314341a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 15684,
            "upload_time": "2025-10-21T03:01:13",
            "upload_time_iso_8601": "2025-10-21T03:01:13.847370Z",
            "url": "https://files.pythonhosted.org/packages/37/2c/97f4fbbf1d4a6d4bfbc1e356d2fb60a2080f3e71db964c718b9031015eae/autocoder_rag_sdk-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c405522ae615b4af69cb1b963c3a3ea43378f0c5ca90003909da4a5db323826b",
                "md5": "468ec4ba1ae877dbeb09ce5f467b9ac2",
                "sha256": "cc74115e0ab9ec5149ece74aac785d3e09f53a1bc5bc64c60a7a68768169e2db"
            },
            "downloads": -1,
            "filename": "autocoder_rag_sdk-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "468ec4ba1ae877dbeb09ce5f467b9ac2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 12275,
            "upload_time": "2025-10-21T03:01:15",
            "upload_time_iso_8601": "2025-10-21T03:01:15.305806Z",
            "url": "https://files.pythonhosted.org/packages/c4/05/522ae615b4af69cb1b963c3a3ea43378f0c5ca90003909da4a5db323826b/autocoder_rag_sdk-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-21 03:01:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "allwefantasy",
    "github_project": "auto-coder",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "contextlib2",
            "specs": []
        },
        {
            "name": "ninja",
            "specs": []
        },
        {
            "name": "jinja2",
            "specs": []
        },
        {
            "name": "rich",
            "specs": []
        },
        {
            "name": "paramiko",
            "specs": []
        },
        {
            "name": "tqdm",
            "specs": []
        },
        {
            "name": "loguru",
            "specs": []
        },
        {
            "name": "pyjava",
            "specs": [
                [
                    ">=",
                    "0.6.21"
                ]
            ]
        },
        {
            "name": "fastapi",
            "specs": []
        },
        {
            "name": "uvicorn",
            "specs": []
        },
        {
            "name": "retrying",
            "specs": []
        },
        {
            "name": "zhipuai",
            "specs": []
        },
        {
            "name": "dashscope",
            "specs": []
        },
        {
            "name": "tiktoken",
            "specs": []
        },
        {
            "name": "tabulate",
            "specs": []
        },
        {
            "name": "jupyter_client",
            "specs": []
        },
        {
            "name": "prompt-toolkit",
            "specs": []
        },
        {
            "name": "tokenizers",
            "specs": []
        },
        {
            "name": "aiofiles",
            "specs": []
        },
        {
            "name": "readerwriterlock",
            "specs": []
        },
        {
            "name": "byzerllm",
            "specs": [
                [
                    ">=",
                    "0.1.190"
                ]
            ]
        },
        {
            "name": "patch",
            "specs": []
        },
        {
            "name": "diff_match_patch",
            "specs": []
        },
        {
            "name": "GitPython",
            "specs": []
        },
        {
            "name": "openai",
            "specs": [
                [
                    ">=",
                    "1.14.3"
                ]
            ]
        },
        {
            "name": "anthropic",
            "specs": []
        },
        {
            "name": "google-generativeai",
            "specs": []
        },
        {
            "name": "protobuf",
            "specs": []
        },
        {
            "name": "azure-cognitiveservices-speech",
            "specs": []
        },
        {
            "name": "real_agent",
            "specs": []
        },
        {
            "name": "duckdb",
            "specs": []
        },
        {
            "name": "python-docx",
            "specs": []
        },
        {
            "name": "docx2txt",
            "specs": []
        },
        {
            "name": "pdf2image",
            "specs": []
        },
        {
            "name": "docx2pdf",
            "specs": []
        },
        {
            "name": "pypdf",
            "specs": []
        },
        {
            "name": "pyperclip",
            "specs": []
        },
        {
            "name": "colorama",
            "specs": []
        },
        {
            "name": "pylint",
            "specs": []
        },
        {
            "name": "reportlab",
            "specs": []
        },
        {
            "name": "pathspec",
            "specs": []
        },
        {
            "name": "openpyxl",
            "specs": []
        },
        {
            "name": "python-pptx",
            "specs": []
        },
        {
            "name": "watchfiles",
            "specs": []
        },
        {
            "name": "cairosvg",
            "specs": []
        },
        {
            "name": "matplotlib",
            "specs": []
        },
        {
            "name": "mammoth",
            "specs": []
        },
        {
            "name": "markdownify",
            "specs": []
        },
        {
            "name": "pdfminer.six",
            "specs": []
        },
        {
            "name": "puremagic",
            "specs": []
        },
        {
            "name": "pydub",
            "specs": []
        },
        {
            "name": "youtube-transcript-api",
            "specs": []
        },
        {
            "name": "SpeechRecognition",
            "specs": []
        },
        {
            "name": "pathvalidate",
            "specs": []
        },
        {
            "name": "pexpect",
            "specs": []
        },
        {
            "name": "mcp",
            "specs": []
        },
        {
            "name": "setuptools",
            "specs": []
        },
        {
            "name": "filelock",
            "specs": []
        },
        {
            "name": "argcomplete",
            "specs": []
        }
    ],
    "lcname": "autocoder-rag-sdk"
}
        
Elapsed time: 1.60962s