掘金 人工智能 05月10日 10:03
个人本地项目代码也能一键DeepWiki,这个开源项目有点意思!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用Agent as a Judge项目,快速为个人私有代码仓库生成类似DeepWiki的项目文档。Agent as a Judge原本用于智能体评估,但通过修改代码,可以使其读取本地代码仓库,生成代码结构、目的和最佳实践的Wiki文档,方便新开发者快速了解项目。文章详细描述了环境配置、依赖安装,以及如何修改run_wiki.py脚本以支持本地目录。虽然最终作者未能完全成功运行,但提供了详细的步骤和遇到的问题,供读者参考。

🔑 Agent as a Judge 项目的核心功能是评估智能体表现,并生成高质量的智能体数据集,通过将智能体作为裁判,实现自动化评估。

🛠️ 通过修改 Agent as a Judge 项目中的 `run_wiki.py` 脚本,可以使其支持本地代码仓库,从而为私有代码生成类似 DeepWiki 的项目文档。关键在于添加命令行参数 `--local-dir`,并修改代码逻辑,使其能够读取本地文件夹。

⚠️ 在配置 Agent as a Judge 项目时,需要注意依赖安装问题,特别是 poetry 的使用,以及可能遇到的镜像拉取超时问题。建议直接从 `pyproject.toml` 文件中提取依赖,生成 `requirements.txt` 文件,使用 pip 安装。

🔗 Agent as a Judge 项目支持多种功能,包括 Ask Anything(针对工作区提问)、Agent-as-a-Judge(智能体评估)和 OpenWiki(生成 Wiki 文档)。其中,OpenWiki 是本文的重点,通过运行 `run_wiki.py` 脚本,可以为代码仓库生成文档。

大家好,我是九歌。

最近刷到最多的AI相关文章,就是一路好评的DeepWiki了!手痒难耐的我,也早早就上手体验了一下。整体体验下来,确实不错,对于想了解一个Github项目的新人来说,确实非常有帮助。

但是有一说一,DeepWiki的缺点也是很明显的,一是只能局限于Github项目,对于个人私有代码仓库却爱莫能助!二是时间具有滞后性,项目代码不是最新的!如果公司有传承已久的代码库,新入职的同事看到那山一样高的代码,内心肯定是崩溃的!

其实利用Dify工作流,也能快速做个简易版的DeepWiki出来,但是本着不要重复造轮子的原则,又发现了一个宝藏项目——Agent as a Judge! 怎么样,这个项目名称够长够别扭吧!但是利用这个项目可以快速对个人私有代码仓库生成如下样式项目Wiki,是不是和DeepWiki一样!

Agent as a Judge 项目的初衷就是让智能体评价智能体,把智能体当做裁判!主要提供了一种自动化评估智能体工作表现的方法,同时还能生成高质量的智能体数据集。它就像是一个严格的裁判,能够快速、准确地评判智能体在执行各种任务时的表现,并且为智能体的进一步训练提供有用的反馈。

简单说,Agent as a Judge 能够对项目代码进行问答对话,生成Wiki文档,对智能体方向的项目进行测评

为了更快了解这个项目,我们先把这个项目在我们自己电脑上跑起来再说!因为这个项目是用poetry管理依赖,所以我们在自己电脑上装上它(以Windows为例)。poetry感觉不是很好用,我第一次用这个东西,浪费了很多时间。

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

然后我们根据官方给的安装教程,完成项目的安装。步骤如下,我进行了优化。

#1.拉取项目代码git clone https://github.com/metauto-ai/agent-as-a-judge.gitcd agent-as-a-judge/#创建虚拟环境python -m venv .venv#激活环境..venv\Scripts\activate#给poetry指定虚拟环境poetry env use ..venv\Scripts\python.exe#安装依赖poetry install 

遇到的坑,请大家避开,其实直接从pyproject.toml把依赖复制出来,用大模型整理成requirements.txt,直接用pip安装更方便:

#1.删除poetry.lock文件#2.poetry镜像拉取超时,修改pyproject.toml文件,在最后添加下面配置[[tool.poetry.source]]name = "tsinghua-pypi"url = "https://pypi.tuna.tsinghua.edu.cn/simple"priority = "primary"#3 还需要额外安装的Python包litellmdotenvtenacityspacyrank-bm25sentence_transformerspandaspython-docxPyPDF2 openpyxlopencv-pythonbs4pylatexencpython-pptx

最后一步,我们配置一下这个项目的大模型,将 .env.samplech重名为 .env ,添加openai_api_key。因为我没有openai官方的key,只有openrouter的,所以我顺便修改了一下源码。

#将 .env.samplech重名为 .env DEFAULT_LLM="gpt-4o-2024-08-06"#添加openrouter keyOPENAI_API_KEY="sk-***"PROJECT_DIR="{PATH_TO_THIS_PROJECT}"# 修改 agent_as_a_judge\llm\provider.py 代码 220行 base_url = "https://openrouter.ai/api/v1"

具体作用

1.Ask Anything

可以针对任意工作区提出问题,了解工作区的内容和结构。例如,对一个药物反应预测的代码库进行问题查询,以及其包含的数据加载、模型实现和训练等相关文件。

PYTHONPATH=. python scripts/run_ask.py \  --workspace $(pwd)/benchmark/workspaces/OpenHands/39_Drug_Response_Prediction_SVM_GDSC_ML \  --question "What does this workspace contain?"

2.Agent-as-a-Judge

对 DevAI 数据集中的任务进行评估,收集证据来判断项目的输出是否满足要求。这个功能有点复杂,我们现在先简单知道一下,等后面有时间再研究。

PYTHONPATH=. python scripts/run_aaaj.py \  --developer_agent "OpenHands" \  --setting "gray_box" \  --planning "comprehensive (no planning)" \  --benchmark_dir $(pwd)/benchmark

3.OpenWiki:这个就是本文的主角,可以制作给仓库生成Wiki文档,帮助新开发者快速了解代码库的结构、目的和最佳实践。我们来看一下使用方法,好像很简单,直接运行run_wiki.py,后面带上github项目库的URL就可以了!

python scripts/run_wiki.py https://github.com/metauto-ai/GPTSwarm

等等,咱的文章标题不是个人私有代码仓库吗?读取github仓库的功能,DeepWiki就支持啊,而且也支持私有仓库,说好的本地仓库代码呢?

别急,这个项目不是开源吗,咱研究一下代码,改成让它直接读取本地文件夹,不就行了吗?

通过阅读run_wiki.py的源码,我们可以理清它的工作逻辑,主要通过 download_github_repo 函数从 GitHub 克隆仓库,在 main 函数中使用 parse_arguments 函数获取用户输入的 GitHub 仓库 URL 来进行后续操作。

def main():    # ... 其他代码 ...    args = parse_arguments()    repo_url = args.repo_url or get_repo_url_interactive()    # ... 其他代码 ...    repo_dir = download_github_repo(repo_url, output_dir)    # ... 其他代码 ...

也就是说,它的工作原理就是把github的仓库代码下载到本地文件夹,再进行分析!那我们直接让run_wiki.py的参数接受个本地路径不就可以了,这样改也很简单。添加一个新的命令行参数来指定本地文件夹路径,并且在代码中根据这个参数来决定是下载 GitHub 仓库还是直接使用本地文件夹。

import argparsefrom pathlib import Pathimport loggingimport timeimport jsonimport datetimeimport subprocessfrom urllib.parse import urlparsefrom dotenv import load_dotenv# 省略其他代码# ...def parse_arguments():    parser = argparse.ArgumentParser(description="Generate documentation for GitHub repositories or local folders")    parser.add_argument(        "--repo-url",        type=str,        help="GitHub repository URL (e.g., https://github.com/metauto-ai/gptswarm)",        default=None    )    parser.add_argument(        "--local-dir",        type=str,        help="Path to the local project folder",        default=None    )    parser.add_argument(        "--output_dir",         type=str,         default="./repo_docs",        help="Directory to save documentation"    )    # 其他保持不变    # ...    return parser.parse_args()def main():    load_dotenv()    logging.basicConfig(        level=logging.INFO,        format="%(asctime)s - %(levelname)s - %(message)s"    )    logger = logging.getLogger(__name__)    args = parse_arguments()    output_dir = Path(args.output_dir)    output_dir.mkdir(parents=True, exist_ok=True)    judge_dir = output_dir / "judge"    judge_dir.mkdir(parents=True, exist_ok=True)    start_time = time.time()    try:        if args.repo_url:            logger.info(f"Starting repository download and documentation: {args.repo_url}")            repo_dir = download_github_repo(args.repo_url, output_dir)        elif args.local_dir:            logger.info(f"Using local project folder: {args.local_dir}")            repo_dir = Path(args.local_dir)            if not repo_dir.exists() or not repo_dir.is_dir():                raise ValueError(f"Invalid local directory: {args.local_dir}")        else:            raise ValueError("Please provide either a GitHub repository URL or a local project folder path.")        # 后续代码保持不变        # ...    except Exception as e:        logger.error(f"Error generating documentation: {str(e)}")        import traceback        logger.error(traceback.format_exc())        sys.exit(1)if __name__ == "__main__":    main()

最后我们看一下结果,跑出来了,但是报错了!

生成的网页没有数据!因为访问不了huggingface!我打开科学上网,但是有些包又报代理错误!

最后我想说,尽力了,不想浪费时间在这个项目上了,前前后后用掉了我三个晚上!此天不让我跑通这个项目,非我不用心也!以后用时间再研究吧!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Agent as a Judge DeepWiki 代码文档 私有仓库 开源项目
相关文章