代码库级编程工具

一个基于模型上下文协议(MCP)的工具,用于支持代码库级别的编程任务,通过AST解析和结构化JSON引用提供高效的代码查询功能。

  • by apple-aiml-research
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 apple/ml-mcp-repo-level-coding

使用说明

ml-mcp仓库级编码

此存储库包含论文的公共代码 *“使用模型上下文协议的代理工具在存储库级编码方面优于RAG和长上下文窗口”*为了支持可重复性,我们提供了一个公共代码库,该代码库反映了我们的数据准备和工具公开管道,其中包括抽象语法树(AST)解析、结构化JSON引用和MCP工具定义。我们公共代码库中符合ASK的MCP工具使语言模型能够回答有关在线可用的开源存储库的问题,而不是内部开发的存储库。

存储库描述

这 scikit学习库 作为输入是必需的。为了方便起见 scikit-learn/ repo作为git子模块包含在内。要获取存储库内容,请运行 git submodule add https://github.com/scikit-learn/scikit-learn.git scikit-learn 克隆此存储库后。请注意,该存储库被称为 sklearn 贯穿我们的代码。以下是我们存储库中其他文件的明细:

参考数据库创建

  • reference_json_scraping_config.yaml:用于解析sklearn存储库的配置。必须遵循既定的结构。配置选项包括1。verbose(是否在运行时打印更新)2。skip_private_functions(是否在生成的数据库中跳过/包含私有函数)3。include_classes(是否在生成的db中包含类信息)4。文档字符串中要跳过的部分等。

  • generate_reference_json.py:处理原始sklearn存储库,并输出用于MCP工具的参考数据库。运行途径:

    python generate_reference_json.py --config path_to_config_file
    
  • sklearn_function_reference.json:输出 generate_reference_json.py 在中使用默认配置 reference_json_scraping_config.yaml此JSON文件用作LLM可以通过工具调用查询的参考数据库。

使用MCP工具查询模型

  • ask_AI_config.yaml:用于使用MCP工具向AI模型发出查询的配置。

  • ask_AI.py:在提供MCP工具描述的同时向OpenAI模型发出查询的脚本。默认工具在中定义 mcp_tools_sklearn.py 解析后的工具选项列在 ask_AI_config.yaml这些工具使LLM能够快速搜索和检索有关sklearn存储库的文档(无需解析源代码)。 若要使用此脚本,必须获取OpenAI API密钥并在配置文件中列出。 可定制的选项包括用户查询、配置文件的名称以及用于将AI模型的响应保存到文件的可选参数。运行途径:

    python ask_AI.py --config_name ask_AI_config.yaml --query "User's sklearn query to ask model"
    

要更改可选参数,请运行/更改以下模板中的选项:

python ask_AI.py --config_name config_file_name --query "User's sklearn query to ask model" --output_file name_of_output_file
  • mcp_tools_sklearn.py:实施两个符合ASK标准的工具,类似于我们研究中接触LLM的工具。

  • sklearn_meta_prompt.py:运行本文所述实验时使用的系统提示示例。运行时,此提示将附加到每个用户查询之前 ask_AI.py.