成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

個(gè)人本地項(xiàng)目代碼也能一鍵DeepWiki,這個(gè)開(kāi)源項(xiàng)目有點(diǎn)意思! 原創(chuàng)

發(fā)布于 2025-5-30 06:42
瀏覽
0收藏

大家好,我是九歌。

最近刷到最多的AI相關(guān)文章,就是一路好評(píng)的DeepWiki了!手癢難耐的我,也早早就上手體驗(yàn)了一下。整體體驗(yàn)下來(lái),確實(shí)不錯(cuò),對(duì)于想了解一個(gè)Github項(xiàng)目的新人來(lái)說(shuō),確實(shí)非常有幫助。

但是有一說(shuō)一,DeepWiki的缺點(diǎn)也是很明顯的,一是只能局限于Github項(xiàng)目,對(duì)于個(gè)人私有代碼倉(cāng)庫(kù)卻愛(ài)莫能助!二是時(shí)間具有滯后性,項(xiàng)目代碼不是最新的!如果公司有傳承已久的代碼庫(kù),新入職的同事看到那山一樣高的代碼,內(nèi)心肯定是崩潰的!

其實(shí)利用Dify工作流,也能快速做個(gè)簡(jiǎn)易版的DeepWiki出來(lái),但是本著不要重復(fù)造輪子的原則,又發(fā)現(xiàn)了一個(gè)寶藏項(xiàng)目——Agent as a Judge! 怎么樣,這個(gè)項(xiàng)目名稱(chēng)夠長(zhǎng)夠別扭吧!但是利用這個(gè)項(xiàng)目可以快速對(duì)個(gè)人私有代碼倉(cāng)庫(kù)生成如下樣式項(xiàng)目Wiki,是不是和DeepWiki一樣!

個(gè)人本地項(xiàng)目代碼也能一鍵DeepWiki,這個(gè)開(kāi)源項(xiàng)目有點(diǎn)意思!-AI.x社區(qū)

Agent as a Judge 項(xiàng)目的初衷就是讓智能體評(píng)價(jià)智能體,把智能體當(dāng)做裁判!主要提供了一種自動(dòng)化評(píng)估智能體工作表現(xiàn)的方法,同時(shí)還能生成高質(zhì)量的智能體數(shù)據(jù)集。它就像是一個(gè)嚴(yán)格的裁判,能夠快速、準(zhǔn)確地評(píng)判智能體在執(zhí)行各種任務(wù)時(shí)的表現(xiàn),并且為智能體的進(jìn)一步訓(xùn)練提供有用的反饋。

個(gè)人本地項(xiàng)目代碼也能一鍵DeepWiki,這個(gè)開(kāi)源項(xiàng)目有點(diǎn)意思!-AI.x社區(qū)

簡(jiǎn)單說(shuō),Agent as a Judge 能夠?qū)?xiàng)目代碼進(jìn)行問(wèn)答對(duì)話(huà),生成Wiki文檔,對(duì)智能體方向的項(xiàng)目進(jìn)行測(cè)評(píng)!

為了更快了解這個(gè)項(xiàng)目,我們先把這個(gè)項(xiàng)目在我們自己電腦上跑起來(lái)再說(shuō)!因?yàn)檫@個(gè)項(xiàng)目是用poetry管理依賴(lài),所以我們?cè)谧约弘娔X上裝上它(以Windows為例)。poetry感覺(jué)不是很好用,我第一次用這個(gè)東西,浪費(fèi)了很多時(shí)間。

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

然后我們根據(jù)官方給的安裝教程,完成項(xiàng)目的安裝。步驟如下,我進(jìn)行了優(yōu)化。

#1.拉取項(xiàng)目代碼
git clone https://github.com/metauto-ai/agent-as-a-judge.git
cd agent-as-a-judge/
#創(chuàng)建虛擬環(huán)境
python -m venv .venv
#激活環(huán)境
.\.venv\Scripts\activate
#給poetry指定虛擬環(huán)境
poetry env use .\.venv\Scripts\python.exe
#安裝依賴(lài)
poetry install

遇到的坑,請(qǐng)大家避開(kāi),其實(shí)直接從pyproject.toml把依賴(lài)復(fù)制出來(lái),用大模型整理成requirements.txt,直接用pip安裝更方便:

#1.刪除poetry.lock文件
#2.poetry鏡像拉取超時(shí),修改pyproject.toml文件,在最后添加下面配置
[[tool.poetry.source]]
name = "tsinghua-pypi"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
priority = "primary"
#3 還需要額外安裝的Python包
litellm
dotenv
tenacity
spacy
rank-bm25
sentence_transformers
pandas
python-docx
PyPDF2 
openpyxl
opencv-python
bs4
pylatexenc
python-pptx

最后一步,我們配置一下這個(gè)項(xiàng)目的大模型,將 .env.samplech重名為 .env ,添加openai_api_key。因?yàn)槲覜](méi)有openai官方的key,只有openrouter的,所以我順便修改了一下源碼。

#將 .env.samplech重名為 .env 
DEFAULT_LLM="gpt-4o-2024-08-06"
#添加openrouter key
OPENAI_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

可以針對(duì)任意工作區(qū)提出問(wèn)題,了解工作區(qū)的內(nèi)容和結(jié)構(gòu)。例如,對(duì)一個(gè)藥物反應(yīng)預(yù)測(cè)的代碼庫(kù)進(jìn)行問(wèn)題查詢(xún),以及其包含的數(shù)據(jù)加載、模型實(shí)現(xiàn)和訓(xùn)練等相關(guān)文件。

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

對(duì) DevAI 數(shù)據(jù)集中的任務(wù)進(jìn)行評(píng)估,收集證據(jù)來(lái)判斷項(xiàng)目的輸出是否滿(mǎn)足要求。這個(gè)功能有點(diǎn)復(fù)雜,我們現(xiàn)在先簡(jiǎn)單知道一下,等后面有時(shí)間再研究。

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

個(gè)人本地項(xiàng)目代碼也能一鍵DeepWiki,這個(gè)開(kāi)源項(xiàng)目有點(diǎn)意思!-AI.x社區(qū)

3.OpenWiki:這個(gè)就是本文的主角,可以制作給倉(cāng)庫(kù)生成Wiki文檔,幫助新開(kāi)發(fā)者快速了解代碼庫(kù)的結(jié)構(gòu)、目的和最佳實(shí)踐。我們來(lái)看一下使用方法,好像很簡(jiǎn)單,直接運(yùn)行run_wiki.py,后面帶上github項(xiàng)目庫(kù)的URL就可以了!

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

等等,咱的文章標(biāo)題不是個(gè)人私有代碼倉(cāng)庫(kù)嗎?讀取github倉(cāng)庫(kù)的功能,DeepWiki就支持啊,而且也支持私有倉(cāng)庫(kù),說(shuō)好的本地倉(cāng)庫(kù)代碼呢?

別急,這個(gè)項(xiàng)目不是開(kāi)源嗎,咱研究一下代碼,改成讓它直接讀取本地文件夾,不就行了嗎?

通過(guò)閱讀run_wiki.py的源碼,我們可以理清它的工作邏輯,主要通過(guò) download_github_repo 函數(shù)從 GitHub 克隆倉(cāng)庫(kù),在 main 函數(shù)中使用 parse_arguments

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

也就是說(shuō),它的工作原理就是把github的倉(cāng)庫(kù)代碼下載到本地文件夾,再進(jìn)行分析!那我們直接讓run_wiki.py的參數(shù)接受個(gè)本地路徑不就可以了,這樣改也很簡(jiǎn)單。添加一個(gè)新的命令行參數(shù)來(lái)指定本地文件夾路徑,并且在代碼中根據(jù)這個(gè)參數(shù)來(lái)決定是下載 GitHub 倉(cāng)庫(kù)還是直接使用本地文件夾。

import argparse
from pathlib import Path
import logging
import time
import json
import datetime
import subprocess
from urllib.parse import urlparse
from dotenv import load_dotenv

# 省略其他代碼
# ...

def parse_arguments():
    parser = argparse.ArgumentParser(descriptinotallow="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.")

        # 后續(xù)代碼保持不變
        # ...

    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()

最后我們看一下結(jié)果,跑出來(lái)了,但是報(bào)錯(cuò)了!

個(gè)人本地項(xiàng)目代碼也能一鍵DeepWiki,這個(gè)開(kāi)源項(xiàng)目有點(diǎn)意思!-AI.x社區(qū)

生成的網(wǎng)頁(yè)沒(méi)有數(shù)據(jù)!因?yàn)樵L(fǎng)問(wèn)不了huggingface!我打開(kāi)科學(xué)上網(wǎng),但是有些包又報(bào)代理錯(cuò)誤!

個(gè)人本地項(xiàng)目代碼也能一鍵DeepWiki,這個(gè)開(kāi)源項(xiàng)目有點(diǎn)意思!-AI.x社區(qū)

最后我想說(shuō),盡力了,不想浪費(fèi)時(shí)間在這個(gè)項(xiàng)目上了,前前后后用掉了我三個(gè)晚上!此天不讓我跑通這個(gè)項(xiàng)目,非我不用心也!


本文轉(zhuǎn)載自??九歌AI大模型??  作者:九歌AI

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2025-5-30 06:42:20修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 激情一区二区三区 | 亚洲人人 | 亚州av在线 | 人人看人人搞 | 欧美乱码精品一区二区三区 | 成人福利网| 欧美视频一区二区三区 | eeuss国产一区二区三区四区 | 欧美白人做受xxxx视频 | 国产午夜视频 | 99精品免费久久久久久日本 | 免费成人午夜 | 国产精品国产a级 | 国产亚洲一区二区三区在线 | 日日夜夜免费精品 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲视频 欧美视频 | 久久久入口 | 欧美中文字幕一区二区三区亚洲 | 在线观看成人av | 久久99久久 | 久久久影院 | 国产在线资源 | 美女131mm久久爽爽免费 | 午夜精品久久久久久久久久久久 | 国产日韩精品一区 | 国产精品久久久久久久久久三级 | 日韩在线一区二区 | 一区二区在线不卡 | 成人亚洲 | 国产精品视频一二三区 | 自拍 亚洲 欧美 老师 丝袜 | 国产成人高清视频 | 亚洲精品电影网在线观看 | 懂色av色香蕉一区二区蜜桃 | 免费观看毛片 | 成人激情视频免费在线观看 | 久久精品欧美一区二区三区麻豆 | 成人午夜电影网 | 亚洲伊人久久综合 | 91视频进入 |