grauwolf32/contractor

GitHub: grauwolf32/contractor

一个利用LLM从源代码自动生成和丰富OpenAPI规范的CLI工具,帮助开发者快速构建或更新API文档。

Stars: 1 | Forks: 0

# Contractor `contractor` 是一个用于使用 LLM 从源代码生成和丰富 OpenAPI 规范的 CLI 工具。 ## 功能 目前提供以下管道: * `build` — 从项目代码构建或更新 OpenAPI 规范 * `enrich` — 根据项目结构和实现丰富现有的 OpenAPI 产物 CLI 以 `contractor` 命令安装。 ## 需求 * Python `>=3.10,<3.15` * Poetry * 运行的 LiteLLM 代理 * 具有 OpenAI 兼容 API 的 LLM 后端 ## 开始之前 在运行 `contractor` 之前,您需要: 1. 启动 LiteLLM 代理 2. 配置它 3. 确保所需模型通过后端可用 4. 使用 Poetry 安装项目依赖 在这个仓库中,LiteLLM 通常通过以下方式启动: ``` deploy/litellm/run.sh ``` 这不是强制性的。您可以以任何方便的方式启动代理,只要满足以下条件: * 应用程序可以访问 LiteLLM * 配置中的模型名称与传递给 `--model` 的名称匹配 ## LiteLLM 配置示例 文件 `litellm_config.yaml`: ``` model_list: - model_name: lm-studio-nemotron litellm_params: model: openai/nvidia/nemotron-3-nano api_key: lm-studio api_base: http://localhost:1234/v1 tpm: 100000 rpm: 10 - model_name: lm-studio-openai litellm_params: model: openai/openai/gpt-oss-20b api_key: lm-studio api_base: http://localhost:1234/v1 tpm: 100000 rpm: 10 - model_name: lm-studio-qwen3.5 litellm_params: model: openai/qwen/qwen3.5-35b-a3b api_key: lm-studio api_base: http://localhost:1234/v1 tpm: 100000 rpm: 10 litellm_settings: num_retries: 3 request_timeout: 300 ``` ### 这里的关键点 * `model_name` — 之后在 CLI 中通过 `--model` 使用的名称 * `api_base` — OpenAI 兼容的 API 端点 * `request_timeout: 300` — 对长时间运行的任务很有用 * `num_retries: 3` — 错误时的重试次数 ## 通过 Podman 运行 LiteLLM 代理的示例 ``` podman run --rm -d \ -v $(pwd)/litellm_config.yaml:/app/config.yaml \ -e LITELLM_MASTER_KEY="sk-litellm-changeme" \ -e LITELLM_SALT_KEY="sk-random-hash-changeme" \ --network="host" \ "ghcr.io/berriai/litellm:main-stable" \ --config /app/config.yaml ``` 如果仓库已经包含现成的脚本,您可以使用它: ``` deploy/litellm/run.sh ``` ## 安装 ``` poetry install python -c "from tree_sitter_language_pack import download_all;download_all();" ``` 安装后,CLI 可通过以下方式使用: ``` poetry run contractor --help ``` 如果 Poetry 环境已激活,您可以简单地运行: ``` contractor --help ``` ## 使用方法 ### 一般格式 ``` contractor \ --pipeline \ --project-path \ --folder-name \ --user-id \ --model ``` ### 参数 * `--pipeline` — 管道名称 目前可用:`build`、`enrich` * `--project-path` — 项目目录的路径 * `--folder-name` — 项目内将用于任务模板的路径 默认值:`/` * `--artifact` — 现有 OpenAPI 文件的路径 需要输入产物的管道使用,如 `enrich` * `--user-id` — 运行器的用户标识符 默认值:`cli-user` * `--model` — LiteLLM 配置中的模型名称 默认值:`lm-studio-qwen3.5` ## 示例 ### 从项目代码构建 OpenAPI ``` contractor \ --pipeline build \ --project-path /path/to/project \ --folder-name /src \ --model lm-studio-qwen3.5 ``` 最好将项目放在一个单独的隔离文件夹中,以免代理意外进入相邻项目。 ### 丰富现有的 OpenAPI 文件 ``` contractor \ --pipeline enrich \ --project-path /path/to/project \ --folder-name /src \ --artifact /path/to/openapi.yaml \ --model lm-studio-qwen3.5 ``` ## 输入参数验证 CLI 会验证: * `--project-path` 存在且是一个目录 * `--folder-name` 在 `--project-path` 内存在 * `--artifact` 存在且是一个文件 * `--artifact` 仅针对需要它的管道提供 之后,新管道将自动出现在 `--pipeline` 中。 ## 主要项目部分 * `contractor/main.py` — CLI 入口点 * `contractor/agents/` — 代理 * `contractor/runners/` — 管道运行器 * `contractor/tasks/` — YAML 任务定义 * `contractor/tools/` — 代理工具 * `contractor/utils/` — 工具函数 重要的是,相应的模型确实可以通过后端获得。 ## 典型运行场景 1. 启动带有模型的后端 2. 启动 LiteLLM 代理 3. 安装依赖: poetry install 4. 检查 CLI: poetry run contractor --help 5. 运行所需的管道: poetry run contractor \ --pipeline build \ --project-path /path/to/project \ --model lm-studio-qwen3.5 ## 故障排除 ### `contractor: command not found` 使用: ``` poetry run contractor --help ``` 或激活 Poetry 虚拟环境。 ### 模型错误 检查以下内容: * LiteLLM 代理正在运行 * 传递给 `--model` 的名称与 `litellm_config.yaml` 中的 `model_name` 匹配 * 后端确实可以通过 `api_base` 访问 ### `--artifact` 错误 对于 `enrich`,您需要提供一个现有文件: ``` --artifact /path/to/openapi.yaml ``` ### 长时间响应或超时 您可以: * 在 LiteLLM 配置中增加 `request_timeout` * 选择不同的模型 * 通过 `--folder-name` 限制分析范围 ## 开发 安装依赖: ``` poetry install ``` 运行测试: ``` poetry run pytest ``` 检查: ``` poetry run ruff check . poetry run mypy . ``` ## 添加新管道 管道列表集中在 `contractor/main.py` 的管道注册表中。 要添加新管道,只需: 1. 实现一个返回 `TaskRunner` 的函数 2. 将其添加到 `get_pipelines()` 示例: ``` def get_pipelines() -> dict[str, PipelineSpec]: return { "build": PipelineSpec(builder=oas_building_pipeline), "enrich": PipelineSpec(builder=oas_enrichment_pipeline, requires_artifact=True), "my-new-pipeline": PipelineSpec(builder=my_new_pipeline), } } ```
标签:API开发工具, API文档生成, API规范管理, DLL 劫持, LiteLLM, OpenAI兼容API, OpenAPI规范, Python, RESTful API, 代码生成, 大语言模型, 开发效率工具, 提示词优化, 无后门, 渗透测试工具, 自动化文档, 规范丰富, 逆向工具