SuperAPI AI 工具集

create-generation-plugin

智能体与模型

查看项目

更新于 10-16 10:46

技能介绍

用途

create-generation-plugin 是一项指导技能,用于帮助开发者为 AutoRAG-Research 创建自定义的生成管线(generation pipeline)插件。它覆盖从脚手架搭建到实现、测试与安装的完整流程。

主要能力

  • 通过命令 autorag-research plugin create my_rag --type=generation 生成插件骨架。
  • 引导开发者阅读生成的 pipeline.py、pyproject.toml、YAML 配置与测试文件以理解结构。
  • 说明需要实现的方法 _generate(query_id, top_k),即 RAG 策略的核心逻辑所在。
  • 列出在管线内可用的属性:
    • self._llm — LangChain BaseLanguageModel,可用 await self._llm.ainvoke(prompt)。
    • self._retrieval_pipeline — 组合的检索管线,可用 await self._retrieval_pipeline._retrieve_by_id(query_id, top_k)。
    • self._service — GenerationPipelineService,可用 self._service.get_chunk_contents(chunk_ids)、self._get_query_text(query_id)。
  • 约定返回值必须为 GenerationResult(text=...),来自 autorag_research.orm.service.generation_pipeline。

使用方式

  1. 脚手架:运行带 --type=generation 的创建命令,阅读生成文件。
  2. 实现:参考 ai_instructions/pipeline_implementer.md、ai_instructions/pipeline_test_writer.md、ai_instructions/pipeline_architecture_mapper.md,实现 _generate 方法。自定义参数可加入配置类,并通过 get_pipeline_kwargs() 传入管线构造函数。
  3. 测试与安装:在测试中使用 langchain_core.language_models.FakeListLLM 模拟 LLM;执行 cd my_rag_plugin && pip install -e .(或 uv pip install -e .),再 cd .. && autorag-research plugin sync,并用 ls configs/pipelines/generation/my_rag.yaml 验证。

关键文件

  • 基类配置:autorag_research/config.py → BaseGenerationPipelineConfig
  • 基类管线:autorag_research/pipelines/generation/base.py → BaseGenerationPipeline
  • 服务与结果:autorag_research/orm/service/generation_pipeline.py
  • 插件入口发现:autorag_research/plugin_registry.py

可参考的现有实现

  • basic_rag.py:简单的先检索后生成(建议从这里开始)
  • ircot.py:检索与思维链交织
  • et2rag.py:实体感知 RAG
  • main_rag.py:主 RAG 管线

对应 YAML 配置:configs/pipelines/generation/basic_rag.yaml、configs/pipelines/generation/ircot.yaml。

限制与注意事项

  • 不要在 _generate 中自行添加 asyncio.gather、asyncio.Semaphore 或任何并发控制。基类管线的 run() 已通过 run_with_concurrency_limit()(信号量 + gather)处理所有查询的并行执行,由 max_concurrency 配置参数控制;_generate 每条查询只调用一次,只需实现该单条查询的检索与生成逻辑。
  • 继承自 BaseGenerationPipelineConfig 的配置字段包括:llm(LLM 模型字符串,会自动转换为 LangChain 模型实例)、retrieval_pipeline_name(与其组合的检索管线名称,由 Executor 注入)。
  • 该插件的其他信息(如收费、价格、平台支持等)暂未提供。