Opik 优化器模块开发指南:从目录结构、构建命令到测试与贡献规范的完整解读

Opik 优化器模块开发指南:从目录结构、构建命令到测试与贡献规范的完整解读 Opik 优化器模块开发指南从目录结构、构建命令到测试与贡献规范的完整解读【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm本指南以sdks/opik_optimizer/AGENTS.md为骨架结合Makefile、pyproject.toml、README.md与核心源码系统讲解 Opik 开源仓库中opik_optimizerAgent/提示词优化工具包模块的工程组织方式模块目录如何划分、如何搭建开发环境并运行测试、代码风格与命名约定、pytest 测试分层策略以及 Agent 贡献代码时必须遵守的工作流、PR 规范与安全配置要求。读完本文你可以快速上手在该模块中进行开发、测试与提交贡献。文档定位模块级指南与共享策略的分层关系sdks/opik_optimizer/AGENTS.md是一份模块级module-level开发指南其开篇明确了两条继承原则该文件只包含优化器特有的指导内容optimizer-specific guidance不重复仓库级策略共享的 monorepo 工作流、PR 规范与安全策略统一继承自仓库根目录的 AGENTS.md。这意味着整个 Opik 仓库采用根指南 模块指南的分层治理模式根目录AGENTS.md是canonical monorepo guide仓库级规范总纲描述各主模块apps/opik-backend、apps/opik-frontend、sdks/python、sdks/typescript、sdks/opik_optimizer、deployment、tests_end_to_end等的职责边界、共享构建测试命令与统一 PR 规范而每个子模块的AGENTS.md只需保留本模块特有内容并引用根文件。这样的设计避免了同一规则在多处重复维护也保证了 Agent无论是 Copilot、Claude 还是其他 AI 编程代理在任意模块工作时都能拿到先看模块指南、再回溯根指南的完整上下文。对开发者而言理解这一分层是快速定位规范的第一步优化器相关约定看sdks/opik_optimizer/AGENTS.md跨模块约定看根目录 AGENTS.md。模块全景opik_optimizer 的目录结构与模块组织opik_optimizer是一个标准的 setuptools Python 包源码布局采用src/目录从sdks/opik_optimizer/目录树可以清晰看到其完整布局源码实现src/opik_optimizer/这是所有核心实现所在目录包括核心优化器core optimizersbase_optimizer.pyBaseOptimizer抽象基类与 algorithms/ 下的六个算法实现——evolutionary_optimizer进化算法、few_shot_bayesian_optimizer少样本贝叶斯、gepa_optimizer遗传-帕累托 GEPA、hierarchical_reflective_optimizer层级根因反思即 HRPO、meta_prompt_optimizer元提示、parameter_optimizerLLM 调用参数如 temperature/top_p 的贝叶斯优化数据集datasetssrc/opik_optimizer/datasets/提供hotpot_qa、gsm8k、truthful_qa、tiny_test、context7_eval等内置评测数据集指标metricsanswer_correctness、levenshtein_accuracy、multi_metric_objective以及基于 span 的task_span成本/时长指标工具与工具调用utilitiesutils/toolcallingMCP 与函数调用支持、utils/toolswikipedia、colbert 检索工具、utils/prompt_segments细粒度提示片段编辑、utils/prompt_library等核心运行时组件corecore/agent.py、core/evaluation.py、core/llm_calls.py、core/results.py、core/state.py、core/runtime.py。包的公共 API 面在 src/opik_optimizer/init.py 中统一导出包括全部优化器类、ChatPrompt、OptimizationResult、MultiMetricObjective等并设置了LITELLM_LOCAL_MODEL_COST_MAPTrue以规避 LiteLLM 的本地成本映射问题。打包元数据src/opik_optimizer.egg-info/由 setuptools 构建时自动生成的打包元数据目录属于构建产物不应手工编辑make clean会清理它。测试套件tests/严格按tests/unit、tests/integration、tests/e2e三层组织另有一个tests/library_integration目录存放 MCP 远程与 Modal 结果检查等库级集成测试。三层的定位差异详见下文测试指南一节。辅助脚本scripts/包含基准测试、数据生成与 MCP/LLM 框架示例scripts/optimizer_algorithms/各算法的可运行示例evolutionary、fewshot、gepa、hierarchical、metaprompt、parameterscripts/llm_frameworks/与 LangGraph、CrewAI、Pydantic AI、ADK、Microsoft Agent Framework 集成的示例scripts/benchmarks/HotpotQA 多跳基准脚本与任务 JSON 示例scripts/arc_agi/ARC-AGI 任务的优化器实现另有generate_changelog.py、generate_fern_docs.py、validation_dataset.py等工具。长文档与示例docs/与notebooks/docs/长期维护的文档与指南含 images/ 下的优化过程可视化图notebooks/OpikOptimizerIntro.ipynb与OpikSyntheticDataOptimizer.ipynb后者支持 Colab 直接运行。基准测试benchmarks/benchmark_results/性能与实验产物目录。benchmarks/内含统一运行器 run_benchmark.py、run_benchmark_modal.py、引擎抽象engines/local、engines/modal、评测包hotpot、hover、ifbench、pupa与配置configs/下的 generator JSON 与 manifest schema。构建、测试与开发命令Makefile 目标逐项解析开发环境搭建与常用命令统一收敛在模块内的 Makefile 中仓库级命令则参考根目录 AGENTS.md 的 Build, Test, and Development Commands 一节。以下是 AGENTS.md 列出的目标及其底层实现Make 目标作用底层实现来自 Makefilemake setup-venv在.venv创建本地虚拟环境python3 -m venv .venvmake install-dev安装包 开发依赖pip install .[dev]make test运行单元测试带覆盖率排除 integration/e2epytest -n auto --dist loadfile -m not integration and not e2e tests/unit同时输出 term-missing/xml/html 三种覆盖率报告make test-all运行 unit integration e2e 全部测试pytest -n auto --dist loadfile -m integration or e2e or not integration tests tests/e2emake precommit在改动文件上运行 pre-commit 钩子从仓库根执行pre-commit run --from-ref origin/main --to-ref HEAD --show-diff-on-failure --verbosemake build构建 sdist 与 wheelpython setup.py sdist bdist_wheelmake clean清理构建产物与缓存删除build、dist、各__pycache__、*.egg-info、.pytest_cache、.mypy_cache、.ruff_cache、.litellm_cache、覆盖率产物与.venvmake modal-worker/make modal-coord/make modal-deploy基准测试的 Modal worker/协调器部署任务分别执行modal deploy benchmarks/engines/modal/engine.py、modal deploy benchmarks/run_benchmark_modal.py以及两者串联值得注意的工程细节测试环境变量make test与make test-all都设置了一组环境变量其中LITELLM_CACHE_TYPEmemory用于禁用 LiteLLM 磁盘缓存Makefile 注释明确说明是为了避免测试时只读 sqlite 报错LITELLM_LOGGING_DISABLED1、LITELLM_USE_QUEUE_LOGGINGfalse用于静默日志HF_HUB_ENABLE_PROGRESS_BARS0关闭 HuggingFace 进度条PYTHONPATHsrc保证以源码方式导入。并行执行测试通过pytest-xdist的-n auto --dist loadfile并行运行--maxfail1快速失败。pre-commit 作用域优化器的钩子注册在仓库根.pre-commit-config.yaml中且以^sdks/opik_optimizer为路径门控——因此make precommit会先git fetch origin main再基于 diff 范围只触发优化器相关改动上的钩子避免全量扫描。基准测试运行Makefile 还提供了benchmark-local与benchmark-modal目标统一运行器加--engine local|modal以及modal-logs、modal-list、modal-check-results需设置RUN_ID等运维目标。依赖约束来自 pyproject.tomlopik_optimizer的运行时依赖在 pyproject.toml 中声明几个关键点要求python 3.10,3.15核心依赖包括opik1.9.7与 Opik 平台集成、litellm1.79.2LLM 调用层、gepa0.1.0、deap1.4.3、optuna、mcp1.0.0、datasets、pydantic、pyrate-limiter、rich、pillow等[project.optional-dependencies]提供devpytest 全家桶、pre-commit、radon/xenon/lizard 复杂度工具、langgraph、bm25s 等、benchmarksmodal、bm25s[full]、pyarrow 等与bm25三个 extra可分别通过pip install .[dev]、pip install opik_optimizer[benchmarks]安装LiteLLM 版本钉得异常细致排除 1.81.x、1.82.x、1.83.0–1.83.6、1.92.x且 Python 3.10 下额外限制1.97源码注释逐一记录了排除原因1.81.x 并发调用下 HTTP 客户端关闭问题、1.82.7/1.82.8 供应链攻击事件、1.83.x 的 CVE-2026-42208 SQL 注入、1.92.x 对 proxy extras 的急切导入等——这是典型的生产级依赖风险管理实践值得在升级依赖时参考。编码风格与命名约定AGENTS.md 对opik_optimizer的代码风格要求非常明确缩进与类型4 空格缩进公共 API 必须携带完整类型注解full type hints命名要明确禁止在非平凡上下文中使用单字母标识符。这一点与pyproject.toml中 mypy 的严格配置互相印证——disallow_untyped_defs true、disallow_untyped_calls true、check_untyped_defs true即不允许未类型化的函数定义与调用。命名规范函数/变量用snake_case类用PascalCase常量用UPPER_CASE。静态检查与格式化由 Ruff 与仓库 pre-commit 钩子强制规则包含去除行尾空白、import 排序、lint 规则Epycodestyle、Fpyflakes、Iisort参见 pyproject.toml 的[tool.ruff.lint]配置。diff 最小化倾向最小 diff避免大范围无关重排keep edits scoped这与根 AGENTS.md 的avoid blanket reformatting要求一脉相承。实际代码中BaseOptimizer的构造器签名就是类型注解的范本model: str、verbose: int 1、seed: int 42、model_parameters: dict[str, Any] | None None、prompt_overrides: PromptOverrides None等公共方法如optimize_prompt()也保持了完全一致的注解风格见 base_optimizer.py。测试指南pytest 框架与三层测试策略模块的测试规范如下与根 AGENTS.md 的全局测试策略一致框架pytest文件命名test_*.pyMarker 约定integration标记较慢的服务型测试e2e标记端到端流程测试。pytest.ini中显式声明了这两个 marker避免 pytest 对未注册 marker 的告警先写单测新增行为先补单元测试只有跨边界行为变化时才补充 integration/e2e依赖隔离测试中尽量用 fixtures/mocks 隔离 API 与配置依赖。三层测试的实际内容与目录一一对应见 tests/tests/unit体量最大约 190 个文件覆盖base_optimizer的各个行为面setup、evaluate、finalize、metadata、tool_helpers 等各有独立测试文件、六个算法目录各自的单测、core、metrics、datasets、utils工具调用、展示、采样、节流、打分等与测试 fixturestests/unit/fixtures/提供 llm_mocks、prompt_builders、opik_platform_fixtures 等tests/integrationagents/test_litellm_agent.py、datasets/test_dataset_sources.py、toolcalling/test_mcp_remote_live.py等tests/e2e真实跑通单提示词/多提示词/多模态优化流程、LLM 调用归属追踪tracing/test_optimizer_llm_call_attribution.py、LLM 调用 JSON 重试utilities/test_llm_calls_json_retry.py与基准benchmarks/test_benchmark_smoke.py、test_benchmark_dual_optimizers_live.py。单元测试本身也承担着行为契约的作用——例如tests/unit/core/test_base_optimizer_framework_history.py、test_optimization_result_improvement_and_str.py等文件直接验证了OptimizationResult的改进判定、字符串表示与序列化行为可作为理解优化器公共 API 语义的第一手资料。Agent 贡献工作流与提交规范模块属于 Opik monorepo 的一部分Agent 贡献者需要继承共享工作流遵循根 AGENTS.md 的 Agent Contribution Workflow 一节——提交前阅读CONTRIBUTING.md与.github/pull_request_template.mdPR 中关联已跟踪的工作项Fixes #id/Resolves #id优先使用 draft PRgh pr create --draft并行工作优先使用 worktree请求评审前自检运行本文件模块 AGENTS.md中列出的相关 formatter 与测试命令即make test、make precommit等后再请求 review提交/PR 标题约定遵守共享的语义化风格[OPIK-1234] [COMPONENT] feat|fix|refactor|docs: short summary并使用现有组件前缀[SDK]等。优化器特有的约定是适用时使用SDK 标记的提交/PR 标题并在 PR 描述中包含测试命令摘要列出跑过的测试与结果这与根指南PR descriptions should include: change summary, test coverage run, and linked issue references的要求呼应。安全与配置要点AGENTS.md 的安全与配置部分强调两条继承共享安全策略参照根 AGENTS.md 的 Security Configuration Tips——密钥与 API Key 不得进入源码控制应使用本地.env或 shell 环境变量优化器特有规则提供商密钥provider keys一律通过环境变量提供例如export OPENAI_API_KEY...由于优化器基于 LiteLLM 进行 LLM 调用不同提供商的密钥配置遵循 LiteLLM 的约定远程日志场景使用opik configure命令配置 Opik 客户端提示输入 Opik API Key 与 workspace 信息从而将优化运行、实验对比与数据集管理同步到 Comet/Opik 平台若使用本地自托管部署根指南则建议opik configure --use_local。这个约定在 README.md 的 Setup 一节得到印证先pip install opik-optimizer再可选opik configure配置远程日志随后设置 LLM 提供商的 API Key 环境变量即可开始使用。开发前的准备从零跑通优化器的最小环境综合 AGENTS.md 与 README 的指引在本地搭建opik_optimizer开发环境的完整流程为# 1. 在模块目录内创建虚拟环境或直接使用系统解释器 make setup-venv # 2. 安装包与开发依赖pytest、pre-commit 等 make install-dev # 3. 运行单元测试快速验证带覆盖率 make test # 4. 运行全量测试unit integration e2e make test-all # 5. 对改动文件执行 pre-commit 钩子 make precommit # 6. 构建发行包 make build若采用 pip 安装方式使用而非源码开发则直接pip install opik-optimizer或uv pip install opik-optimizer并通过opik configure与 LLM API Key 环境变量完成配置。需要注意的是make test/make test-all会触发真实的优化与评测逻辑e2e 部分需要 LLM 调用首次运行前请确保已按上文配置好提供商密钥纯单元测试tests/unit则通过tests/unit/fixtures/llm_mocks.py等 mock 设施在无外部依赖下运行。小结sdks/opik_optimizer/AGENTS.md虽然篇幅精简却准确勾勒出一个生产级 Python 优化器模块的开发契约src/布局的模块组织、统一收敛的 Makefile 构建矩阵、Ruff mypy pre-commit 三重质量门、unit/integration/e2e 三层测试策略以及模块指南继承根指南的分层治理模式。对 Agent 与人类开发者而言按本文梳理的路径——先读模块 AGENTS.md 定位本模块约定再回溯根 AGENTS.md 获取共享规范最后用make命令矩阵驱动开发与验证——即可高效、合规地在 Opik 仓库中为优化器模块贡献代码。【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考