ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

gitingest 在 Jupyter Notebook 中如何调用 ingest_async 提取代码库?

gitingest 在 Jupyter Notebook 中如何调用 ingest_async 提取代码库? gitingest 在 Jupyter Notebook 中如何调用 ingest_async 提取代码库【免费下载链接】gitingestReplace hub with ingest in any GitHub URL to get a prompt-friendly extract of a codebase项目地址: https://gitcode.com/GitHub_Trending/gi/gitingest如果你需要在 Jupyter Notebook 里把一个 Git 仓库或本地目录转成适合 LLM 消费的文本摘要而不是走命令行gitingest 的 Python 包提供了异步入口ingest_async传入仓库 URL 或本地目录路径运行后得到summary仓库统计摘要、tree目录结构、content各文件内容三个字符串。使用前提是 Python 3.8 环境README「Requirements」一节并通过pip安装了 gitingest 包。准备条件在 Notebook 环境中安装并确认 gitingest在 Notebook 对应 kernel 能访问的 Python 环境中安装pip install gitingest文档给出的验证方式来自 llms.txt「Installation Verification」是在 shell 中执行python -c from gitingest import ingest; print(GitIngest installed successfully)如果在 Notebook 内验证直接确认导入成功即可from gitingest import ingest_async导入不报错说明当前 kernel 的 Python 环境里 gitingest 已可用。在 Notebook 单元格中直接 await ingest_asyncgitingest 包同时导出ingest同步封装和ingest_async异步实现两者见 入口文件。README「Jupyter notebook usage」给出的调用方式是在单元格中直接awaitfrom gitingest import ingest_async # Use await directly in Jupyter summary, tree, content await ingest_async(path/to/directory)README 的解释是Jupyter notebooks are asynchronous by default所以单元格内可以直接await不需要像普通脚本那样包一层asyncio.run。作为对照README「Python package usage」展示普通脚本里的异步用法是from gitingest import ingest_async import asyncio result asyncio.run(ingest_async(path/to/directory))source参数既可以是本地目录路径也可以是仓库 URL包括指向子目录的 URL 形式summary, tree, content await ingest_async(https://github.com/coderamp-labs/gitingest) summary, tree, content await ingest_async(https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils)返回值与结果验证ingest_async返回(summary, tree, content)元组三者都是字符串summary仓库或目录的统计信息仓库名、文件数、token 估算tree树状的目录结构文本content各文件的文本内容按文件分段。文档给出的输出结构示例来自 llms.txt 的 Usage Example以下为文档示例不代表你本地一定得到相同数值Repository: octocat/hello-world Files analyzed: 1 Estimated tokens: 29Directory structure: └── octocat-hello-world/ └── README FILE: README Hello World!在 Notebook 里验证时运行单元格后确认三个变量均为字符串即可需要完整文本时文档示例的做法是把三段拼起来full_context f{summary}\n\n{tree}\n\n{content}注意 README 说明Python 包调用默认不会把结果写到文件只有显式传output参数才写文件见下节。常用参数私有仓库、分支、过滤与输出以下参数均定义在 entrypoint.py 的函数签名与 docstring 中Notebook 单元格里以关键字参数传入summary, tree, content await ingest_async( https://github.com/username/private-repo, tokengithub_pat_..., # 私有仓库的 PAT也可以改用 GITHUB_TOKEN 环境变量 branchmain, # 克隆并分析的分支默认用仓库默认分支 tagNone, # 指定 tagtag 与 branch 同时给出时 tag 生效 include_patterns*.py, # 只包含匹配的文件 exclude_patterns*.log, # 排除匹配的文件 max_file_size10 * 1024 * 1024, # 单个文件最大大小超过则被忽略默认 10 MB include_submodulesFalse, # 是否递归包含 Git 子模块 include_gitignoredFalse, # 是否包含 .gitignore/.gitingestignore 忽略的文件 outputNone, # 结果写文件的路径- 表示写 stdoutNone 表示不写文件 )几个在 Notebook 场景下值得注意的点私有仓库除token参数外也可以先设置环境变量再调用README 示例import os os.environ[GITHUB_TOKEN] github_pat_... summary, tree, content await ingest_async(https://github.com/username/private-repo)output的三种取值None不写文件Notebook 内最常用-写到 stdout其他路径则把tree和content拼接后写入该文件见 _write_output。远程仓库的临时克隆source是 URL 时gitingest 会先克隆仓库、处理完成后删除临时目录见 _clone_repo_if_remote本地目录则直接读取不产生克隆。默认过滤不传include_gitignoredTrue时.gitignore与.gitingestignore列出的文件会被跳过。可选分支并行提取多个仓库llms.txt 的 Python Integration Patterns 中把ingest_async用于批量场景示例如下其中的process_repo_data、analyze_repository等辅助函数是示例代码需自行实现async def batch_analyze_repos(repo_urls: list): tasks [ingest_async(url) for url in repo_urls] results await asyncio.gather(*tasks) return [process_repo_data(*result) for result in results]如果 Notebook 单元格需要跑多个仓库可以用同样的方式await asyncio.gather(*tasks)拿到每个仓库的(summary, tree, content)。使用边界文档中的 Jupyter 示例是await ingest_async(...)直接写在单元格顶部语句这是 README 明确给出的用法Use await directly in Jupyter。超过max_file_size默认 10 MB的文件会被忽略不是报错。文档没有为 Jupyter 场景额外提供成功判定日志验证以返回的三个字符串是否符合预期结构为准可对照上文文档示例输出。【免费下载链接】gitingestReplace hub with ingest in any GitHub URL to get a prompt-friendly extract of a codebase项目地址: https://gitcode.com/GitHub_Trending/gi/gitingest创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表