GitHub
此示例介绍如何从 GitHub 存储库加载数据。您可以将 GITHUB_ACCESS_TOKEN
环境变量设置为 GitHub 访问令牌以提高速率限制并访问私有存储库。
设置
GitHub 加载器需要 ignore npm 包 作为对等依赖项。像这样安装它
- npm
- Yarn
- pnpm
npm install ignore
yarn add ignore
pnpm add ignore
使用
import { GithubRepoLoader } from "@langchain/community/document_loaders/web/github";
export const run = async () => {
const loader = new GithubRepoLoader(
"https://github.com/langchain-ai/langchainjs",
{
branch: "main",
recursive: false,
unknown: "warn",
maxConcurrency: 5, // Defaults to 2
}
);
const docs = await loader.load();
console.log({ docs });
};
API 参考
- GithubRepoLoader 来自
@langchain/community/document_loaders/web/github
加载器将忽略图像等二进制文件。
使用 .gitignore 语法
要忽略特定文件,您可以将 ignorePaths
数组传递到构造函数中
import { GithubRepoLoader } from "@langchain/community/document_loaders/web/github";
export const run = async () => {
const loader = new GithubRepoLoader(
"https://github.com/langchain-ai/langchainjs",
{ branch: "main", recursive: false, unknown: "warn", ignorePaths: ["*.md"] }
);
const docs = await loader.load();
console.log({ docs });
// Will not include any .md files
};
API 参考
- GithubRepoLoader 来自
@langchain/community/document_loaders/web/github
使用不同的 GitHub 实例
您可能希望将目标设置为与 github.com
不同的 GitHub 实例,例如,如果您公司有 GitHub Enterprise 实例。为此,您需要两个额外的参数
baseUrl
- 您 GitHub 实例的基 URL,因此 githubUrl 与<baseUrl>/<owner>/<repo>/...
匹配apiUrl
- 您 GitHub 实例的 API 端点的 URL
import { GithubRepoLoader } from "@langchain/community/document_loaders/web/github";
export const run = async () => {
const loader = new GithubRepoLoader(
"https://github.your.company/org/repo-name",
{
baseUrl: "https://github.your.company",
apiUrl: "https://github.your.company/api/v3",
accessToken: "ghp_A1B2C3D4E5F6a7b8c9d0",
branch: "main",
recursive: true,
unknown: "warn",
}
);
const docs = await loader.load();
console.log({ docs });
};
API 参考
- GithubRepoLoader 来自
@langchain/community/document_loaders/web/github
处理子模块
如果您的存储库有子模块,您必须决定加载器是否应该跟随它们。您可以使用布尔 processSubmodules
参数来控制这一点。默认情况下,不会处理子模块。请注意,处理子模块仅与将 recursive
参数设置为 true 一起使用时才有效。
import { GithubRepoLoader } from "@langchain/community/document_loaders/web/github";
export const run = async () => {
const loader = new GithubRepoLoader(
"https://github.com/langchain-ai/langchainjs",
{
branch: "main",
recursive: true,
processSubmodules: true,
unknown: "warn",
}
);
const docs = await loader.load();
console.log({ docs });
};
API 参考
- GithubRepoLoader 来自
@langchain/community/document_loaders/web/github
请注意,加载器不会跟随位于与当前存储库不同的 GitHub 实例上的子模块。
流式处理大型存储库
对于需要以内存高效的方式处理大型存储库的情况。您可以使用 loadAsStream
方法异步地从整个 GitHub 存储库流式传输文档。
import { GithubRepoLoader } from "@langchain/community/document_loaders/web/github";
export const run = async () => {
const loader = new GithubRepoLoader(
"https://github.com/langchain-ai/langchainjs",
{
branch: "main",
recursive: false,
unknown: "warn",
maxConcurrency: 3, // Defaults to 2
}
);
const docs = [];
for await (const doc of loader.loadAsStream()) {
docs.push(doc);
}
console.log({ docs });
};
API 参考
- GithubRepoLoader 来自
@langchain/community/document_loaders/web/github