Skip to content

Commit 9746edc

Browse files
authored
docs[major]: Generate API refs for all packages (langchain-ai#3690)
* docs[major]: Generate API refs for all packages * cr * cr * chore: lint files * remove src/ or libs/ from pathnames * proper version & name * chore: lint files * chore: lint files * cr * cr * cr * cr * filter with bang * cr
1 parent d7c1cb7 commit 9746edc

File tree

8 files changed

+396
-20
lines changed

8 files changed

+396
-20
lines changed

docs/api_refs/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
"scripts": {
66
"dev": "next dev -p 3001",
77
"typedoc": "npx typedoc --options typedoc.json",
8-
"build:scripts": "yarn typedoc && node ./scripts/update-typedoc-css.js",
8+
"build:scripts": "node ./scripts/create-entrypoints.js && yarn typedoc && node ./scripts/update-typedoc-css.js",
99
"build": "yarn clean && yarn run build:deps && yarn build:scripts && next build",
1010
"build:vercel": "yarn clean && yarn run build:deps --force && yarn build:scripts && next build",
11-
"build:deps": "yarn run turbo:command build --filter=@langchain/core --filter=@langchain/anthropic --filter=@langchain/openai --filter=@langchain/community --filter=langchain --concurrency=1",
11+
"build:deps": "yarn run turbo:command build --filter=!api_refs --filter=!core_docs --filter=!examples --filter=!create-langchain-integration --concurrency=1",
1212
"start": "yarn build && next start -p 3001",
1313
"lint": "next lint",
1414
"clean": "rm -rf .next .turbo public/ && mkdir public"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
const { Project, SyntaxKind } = require("ts-morph");
2+
const fs = require("fs");
3+
4+
/**
5+
*
6+
* @param {string} relativePath
7+
* @param {any} updateFunction
8+
*/
9+
const updateJsonFile = (relativePath, updateFunction) => {
10+
const contents = fs.readFileSync(relativePath).toString();
11+
const res = updateFunction(JSON.parse(contents));
12+
fs.writeFileSync(relativePath, JSON.stringify(res, null, 2) + "\n");
13+
};
14+
15+
function main() {
16+
const project = new Project();
17+
const entrypointFiles = [
18+
"../../langchain/scripts/create-entrypoints.js",
19+
"../../langchain-core/scripts/create-entrypoints.js",
20+
"../../libs/langchain-community/scripts/create-entrypoints.js",
21+
"../../libs/langchain-anthropic/scripts/create-entrypoints.js",
22+
"../../libs/langchain-google-genai/scripts/create-entrypoints.js",
23+
"../../libs/langchain-openai/scripts/create-entrypoints.js",
24+
"../../libs/langchain-mistralai/scripts/create-entrypoints.js",
25+
];
26+
27+
const entrypoints = new Set([]);
28+
entrypointFiles.forEach((entrypointFile) => {
29+
// load file contents from ts-morph
30+
const file = project.addSourceFileAtPath(entrypointFile);
31+
// extract the variable named entrypoints
32+
const entrypointVar = file.getVariableDeclarationOrThrow("entrypoints");
33+
// extract the `deprecatedNodeOnly` if it exists
34+
const deprecatedNodeOnlyVar =
35+
file.getVariableDeclaration("deprecatedNodeOnly");
36+
/**
37+
* @type {string[]}
38+
*/
39+
let deprecatedNodeOnly = [];
40+
if (deprecatedNodeOnlyVar) {
41+
const deprecatedNodeOnlyKeys = deprecatedNodeOnlyVar
42+
.getInitializerIfKindOrThrow(SyntaxKind.ArrayLiteralExpression)
43+
.getElements()
44+
.map((element) => element.getText().replaceAll('"', ""));
45+
deprecatedNodeOnly = deprecatedNodeOnlyKeys;
46+
}
47+
// get all keys from the entrypoints object
48+
const entrypointKeys = entrypointVar
49+
.getInitializerIfKindOrThrow(SyntaxKind.ObjectLiteralExpression)
50+
.getProperties()
51+
.map((property) => property.getText());
52+
const entrypointKeysArray = entrypointKeys.map((kv) =>
53+
kv.split(":").map((part) => part.trim().replace(/^"|"$/g, ""))
54+
);
55+
56+
/**
57+
* @type {Record<string, string>}
58+
*/
59+
const entrypointsObject = Object.fromEntries(entrypointKeysArray);
60+
const entrypointDir = entrypointFile.split(
61+
"/scripts/create-entrypoints.js"
62+
)[0];
63+
64+
Object.values(entrypointsObject)
65+
.filter((key) => !deprecatedNodeOnly.includes(key))
66+
.map((key) => entrypoints.add(`${entrypointDir}/src/${key}.ts`));
67+
});
68+
69+
updateJsonFile("./typedoc.json", (json) => ({
70+
...json,
71+
entryPoints: Array.from(entrypoints),
72+
}));
73+
}
74+
main();

docs/api_refs/typedoc.json

+203-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"plugin": [
1212
"./typedoc_plugins/hide_underscore_lc.js"
1313
],
14-
"tsconfig": "../../langchain/tsconfig.json",
14+
"tsconfig": "../../tsconfig.json",
1515
"readme": "none",
1616
"excludePrivate": true,
1717
"excludeInternal": true,
@@ -20,6 +20,7 @@
2020
"includeVersion": true,
2121
"sourceLinkTemplate": "https://github.com/langchain-ai/langchainjs/blob/{gitRevision}/{path}#L{line}",
2222
"logLevel": "Error",
23+
"name": "LangChain.js",
2324
"entryPoints": [
2425
"../../langchain/src/load/index.ts",
2526
"../../langchain/src/load/serializable.ts",
@@ -301,6 +302,206 @@
301302
"../../langchain/src/experimental/tools/pyinterpreter.ts",
302303
"../../langchain/src/evaluation/index.ts",
303304
"../../langchain/src/runnables/index.ts",
304-
"../../langchain/src/runnables/remote.ts"
305+
"../../langchain/src/runnables/remote.ts",
306+
"../../langchain-core/src/agents.ts",
307+
"../../langchain-core/src/caches.ts",
308+
"../../langchain-core/src/callbacks/base.ts",
309+
"../../langchain-core/src/callbacks/manager.ts",
310+
"../../langchain-core/src/callbacks/promises.ts",
311+
"../../langchain-core/src/chat_history.ts",
312+
"../../langchain-core/src/documents/index.ts",
313+
"../../langchain-core/src/embeddings.ts",
314+
"../../langchain-core/src/example_selectors/index.ts",
315+
"../../langchain-core/src/language_models/base.ts",
316+
"../../langchain-core/src/language_models/chat_models.ts",
317+
"../../langchain-core/src/language_models/llms.ts",
318+
"../../langchain-core/src/load/index.ts",
319+
"../../langchain-core/src/load/serializable.ts",
320+
"../../langchain-core/src/memory.ts",
321+
"../../langchain-core/src/messages/index.ts",
322+
"../../langchain-core/src/output_parsers/index.ts",
323+
"../../langchain-core/src/outputs.ts",
324+
"../../langchain-core/src/prompts/index.ts",
325+
"../../langchain-core/src/prompt_values.ts",
326+
"../../langchain-core/src/runnables/index.ts",
327+
"../../langchain-core/src/retrievers.ts",
328+
"../../langchain-core/src/stores.ts",
329+
"../../langchain-core/src/tools.ts",
330+
"../../langchain-core/src/tracers/base.ts",
331+
"../../langchain-core/src/tracers/console.ts",
332+
"../../langchain-core/src/tracers/initialize.ts",
333+
"../../langchain-core/src/tracers/log_stream.ts",
334+
"../../langchain-core/src/tracers/run_collector.ts",
335+
"../../langchain-core/src/tracers/tracer_langchain_v1.ts",
336+
"../../langchain-core/src/tracers/tracer_langchain.ts",
337+
"../../langchain-core/src/utils/async_caller.ts",
338+
"../../langchain-core/src/utils/chunk_array.ts",
339+
"../../langchain-core/src/utils/env.ts",
340+
"../../langchain-core/src/utils/hash.ts",
341+
"../../langchain-core/src/utils/json_patch.ts",
342+
"../../langchain-core/src/utils/json_schema.ts",
343+
"../../langchain-core/src/utils/math.ts",
344+
"../../langchain-core/src/utils/stream.ts",
345+
"../../langchain-core/src/utils/testing/index.ts",
346+
"../../langchain-core/src/utils/tiktoken.ts",
347+
"../../langchain-core/src/utils/types.ts",
348+
"../../langchain-core/src/vectorstores.ts",
349+
"../../libs/langchain-community/src/load/index.ts",
350+
"../../libs/langchain-community/src/load/serializable.ts",
351+
"../../libs/langchain-community/src/tools/aiplugin.ts",
352+
"../../libs/langchain-community/src/tools/aws_lambda.ts",
353+
"../../libs/langchain-community/src/tools/aws_sfn.ts",
354+
"../../libs/langchain-community/src/tools/bingserpapi.ts",
355+
"../../libs/langchain-community/src/tools/brave_search.ts",
356+
"../../libs/langchain-community/src/tools/connery.ts",
357+
"../../libs/langchain-community/src/tools/dadjokeapi.ts",
358+
"../../libs/langchain-community/src/tools/discord.ts",
359+
"../../libs/langchain-community/src/tools/dynamic.ts",
360+
"../../libs/langchain-community/src/tools/dataforseo_api_search.ts",
361+
"../../libs/langchain-community/src/tools/gmail/index.ts",
362+
"../../libs/langchain-community/src/tools/google_custom_search.ts",
363+
"../../libs/langchain-community/src/tools/google_places.ts",
364+
"../../libs/langchain-community/src/tools/ifttt.ts",
365+
"../../libs/langchain-community/src/tools/searchapi.ts",
366+
"../../libs/langchain-community/src/tools/searxng_search.ts",
367+
"../../libs/langchain-community/src/tools/serpapi.ts",
368+
"../../libs/langchain-community/src/tools/serper.ts",
369+
"../../libs/langchain-community/src/tools/wikipedia_query_run.ts",
370+
"../../libs/langchain-community/src/tools/wolframalpha.ts",
371+
"../../libs/langchain-community/src/agents/toolkits/aws_sfn.ts",
372+
"../../libs/langchain-community/src/agents/toolkits/base.ts",
373+
"../../libs/langchain-community/src/agents/toolkits/connery/index.ts",
374+
"../../libs/langchain-community/src/embeddings/bedrock.ts",
375+
"../../libs/langchain-community/src/embeddings/cloudflare_workersai.ts",
376+
"../../libs/langchain-community/src/embeddings/cohere.ts",
377+
"../../libs/langchain-community/src/embeddings/googlepalm.ts",
378+
"../../libs/langchain-community/src/embeddings/googlevertexai.ts",
379+
"../../libs/langchain-community/src/embeddings/gradient_ai.ts",
380+
"../../libs/langchain-community/src/embeddings/hf.ts",
381+
"../../libs/langchain-community/src/embeddings/hf_transformers.ts",
382+
"../../libs/langchain-community/src/embeddings/llama_cpp.ts",
383+
"../../libs/langchain-community/src/embeddings/minimax.ts",
384+
"../../libs/langchain-community/src/embeddings/ollama.ts",
385+
"../../libs/langchain-community/src/embeddings/tensorflow.ts",
386+
"../../libs/langchain-community/src/embeddings/togetherai.ts",
387+
"../../libs/langchain-community/src/embeddings/voyage.ts",
388+
"../../libs/langchain-community/src/llms/ai21.ts",
389+
"../../libs/langchain-community/src/llms/aleph_alpha.ts",
390+
"../../libs/langchain-community/src/llms/bedrock/index.ts",
391+
"../../libs/langchain-community/src/llms/bedrock/web.ts",
392+
"../../libs/langchain-community/src/llms/cloudflare_workersai.ts",
393+
"../../libs/langchain-community/src/llms/cohere.ts",
394+
"../../libs/langchain-community/src/llms/fireworks.ts",
395+
"../../libs/langchain-community/src/llms/googlepalm.ts",
396+
"../../libs/langchain-community/src/llms/googlevertexai/index.ts",
397+
"../../libs/langchain-community/src/llms/googlevertexai/web.ts",
398+
"../../libs/langchain-community/src/llms/gradient_ai.ts",
399+
"../../libs/langchain-community/src/llms/hf.ts",
400+
"../../libs/langchain-community/src/llms/llama_cpp.ts",
401+
"../../libs/langchain-community/src/llms/ollama.ts",
402+
"../../libs/langchain-community/src/llms/portkey.ts",
403+
"../../libs/langchain-community/src/llms/raycast.ts",
404+
"../../libs/langchain-community/src/llms/replicate.ts",
405+
"../../libs/langchain-community/src/llms/sagemaker_endpoint.ts",
406+
"../../libs/langchain-community/src/llms/togetherai.ts",
407+
"../../libs/langchain-community/src/llms/watsonx_ai.ts",
408+
"../../libs/langchain-community/src/llms/writer.ts",
409+
"../../libs/langchain-community/src/llms/yandex.ts",
410+
"../../libs/langchain-community/src/vectorstores/analyticdb.ts",
411+
"../../libs/langchain-community/src/vectorstores/cassandra.ts",
412+
"../../libs/langchain-community/src/vectorstores/chroma.ts",
413+
"../../libs/langchain-community/src/vectorstores/clickhouse.ts",
414+
"../../libs/langchain-community/src/vectorstores/closevector/node.ts",
415+
"../../libs/langchain-community/src/vectorstores/closevector/web.ts",
416+
"../../libs/langchain-community/src/vectorstores/cloudflare_vectorize.ts",
417+
"../../libs/langchain-community/src/vectorstores/convex.ts",
418+
"../../libs/langchain-community/src/vectorstores/elasticsearch.ts",
419+
"../../libs/langchain-community/src/vectorstores/faiss.ts",
420+
"../../libs/langchain-community/src/vectorstores/googlevertexai.ts",
421+
"../../libs/langchain-community/src/vectorstores/hnswlib.ts",
422+
"../../libs/langchain-community/src/vectorstores/lancedb.ts",
423+
"../../libs/langchain-community/src/vectorstores/milvus.ts",
424+
"../../libs/langchain-community/src/vectorstores/momento_vector_index.ts",
425+
"../../libs/langchain-community/src/vectorstores/mongodb_atlas.ts",
426+
"../../libs/langchain-community/src/vectorstores/myscale.ts",
427+
"../../libs/langchain-community/src/vectorstores/neo4j_vector.ts",
428+
"../../libs/langchain-community/src/vectorstores/opensearch.ts",
429+
"../../libs/langchain-community/src/vectorstores/pgvector.ts",
430+
"../../libs/langchain-community/src/vectorstores/pinecone.ts",
431+
"../../libs/langchain-community/src/vectorstores/prisma.ts",
432+
"../../libs/langchain-community/src/vectorstores/qdrant.ts",
433+
"../../libs/langchain-community/src/vectorstores/redis.ts",
434+
"../../libs/langchain-community/src/vectorstores/rockset.ts",
435+
"../../libs/langchain-community/src/vectorstores/singlestore.ts",
436+
"../../libs/langchain-community/src/vectorstores/supabase.ts",
437+
"../../libs/langchain-community/src/vectorstores/tigris.ts",
438+
"../../libs/langchain-community/src/vectorstores/typeorm.ts",
439+
"../../libs/langchain-community/src/vectorstores/typesense.ts",
440+
"../../libs/langchain-community/src/vectorstores/usearch.ts",
441+
"../../libs/langchain-community/src/vectorstores/vectara.ts",
442+
"../../libs/langchain-community/src/vectorstores/vercel_postgres.ts",
443+
"../../libs/langchain-community/src/vectorstores/voy.ts",
444+
"../../libs/langchain-community/src/vectorstores/weaviate.ts",
445+
"../../libs/langchain-community/src/vectorstores/xata.ts",
446+
"../../libs/langchain-community/src/vectorstores/zep.ts",
447+
"../../libs/langchain-community/src/chat_models/baiduwenxin.ts",
448+
"../../libs/langchain-community/src/chat_models/bedrock/index.ts",
449+
"../../libs/langchain-community/src/chat_models/bedrock/web.ts",
450+
"../../libs/langchain-community/src/chat_models/cloudflare_workersai.ts",
451+
"../../libs/langchain-community/src/chat_models/fireworks.ts",
452+
"../../libs/langchain-community/src/chat_models/googlevertexai/index.ts",
453+
"../../libs/langchain-community/src/chat_models/googlevertexai/web.ts",
454+
"../../libs/langchain-community/src/chat_models/googlepalm.ts",
455+
"../../libs/langchain-community/src/chat_models/iflytek_xinghuo/index.ts",
456+
"../../libs/langchain-community/src/chat_models/iflytek_xinghuo/web.ts",
457+
"../../libs/langchain-community/src/chat_models/llama_cpp.ts",
458+
"../../libs/langchain-community/src/chat_models/minimax.ts",
459+
"../../libs/langchain-community/src/chat_models/ollama.ts",
460+
"../../libs/langchain-community/src/chat_models/portkey.ts",
461+
"../../libs/langchain-community/src/chat_models/yandex.ts",
462+
"../../libs/langchain-community/src/callbacks/handlers/llmonitor.ts",
463+
"../../libs/langchain-community/src/retrievers/amazon_kendra.ts",
464+
"../../libs/langchain-community/src/retrievers/chaindesk.ts",
465+
"../../libs/langchain-community/src/retrievers/databerry.ts",
466+
"../../libs/langchain-community/src/retrievers/metal.ts",
467+
"../../libs/langchain-community/src/retrievers/supabase.ts",
468+
"../../libs/langchain-community/src/retrievers/tavily_search_api.ts",
469+
"../../libs/langchain-community/src/retrievers/vectara_summary.ts",
470+
"../../libs/langchain-community/src/retrievers/zep.ts",
471+
"../../libs/langchain-community/src/caches/cloudflare_kv.ts",
472+
"../../libs/langchain-community/src/caches/ioredis.ts",
473+
"../../libs/langchain-community/src/caches/momento.ts",
474+
"../../libs/langchain-community/src/caches/upstash_redis.ts",
475+
"../../libs/langchain-community/src/graphs/neo4j_graph.ts",
476+
"../../libs/langchain-community/src/utils/event_source_parse.ts",
477+
"../../libs/langchain-community/src/document_transformers/html_to_text.ts",
478+
"../../libs/langchain-community/src/document_transformers/mozilla_readability.ts",
479+
"../../libs/langchain-community/src/storage/convex.ts",
480+
"../../libs/langchain-community/src/storage/ioredis.ts",
481+
"../../libs/langchain-community/src/storage/upstash_redis.ts",
482+
"../../libs/langchain-community/src/storage/vercel_kv.ts",
483+
"../../libs/langchain-community/src/stores/doc/base.ts",
484+
"../../libs/langchain-community/src/stores/doc/in_memory.ts",
485+
"../../libs/langchain-community/src/stores/message/cassandra.ts",
486+
"../../libs/langchain-community/src/stores/message/cloudflare_d1.ts",
487+
"../../libs/langchain-community/src/stores/message/convex.ts",
488+
"../../libs/langchain-community/src/stores/message/dynamodb.ts",
489+
"../../libs/langchain-community/src/stores/message/firestore.ts",
490+
"../../libs/langchain-community/src/stores/message/in_memory.ts",
491+
"../../libs/langchain-community/src/stores/message/ioredis.ts",
492+
"../../libs/langchain-community/src/stores/message/momento.ts",
493+
"../../libs/langchain-community/src/stores/message/mongodb.ts",
494+
"../../libs/langchain-community/src/stores/message/planetscale.ts",
495+
"../../libs/langchain-community/src/stores/message/redis.ts",
496+
"../../libs/langchain-community/src/stores/message/upstash_redis.ts",
497+
"../../libs/langchain-community/src/stores/message/xata.ts",
498+
"../../libs/langchain-community/src/memory/chat_memory.ts",
499+
"../../libs/langchain-community/src/memory/motorhead_memory.ts",
500+
"../../libs/langchain-community/src/memory/zep.ts",
501+
"../../libs/langchain-community/src/utils/convex.ts",
502+
"../../libs/langchain-anthropic/src/index.ts",
503+
"../../libs/langchain-google-genai/src/index.ts",
504+
"../../libs/langchain-openai/src/index.ts",
505+
"../../libs/langchain-mistralai/src/index.ts"
305506
]
306507
}

docs/api_refs/typedoc_plugins/hide_underscore_lc.js

+34
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,28 @@ const {
44
Context,
55
ReflectionKind,
66
DeclarationReflection,
7+
RendererEvent,
78
} = require("typedoc");
9+
const { readFileSync } = require("fs");
10+
11+
const PATH_TO_LANGCHAIN_PKG_JSON = "../../langchain/package.json"
812

913
/**
1014
* @param {Application} application
1115
* @returns {void}
1216
*/
1317
function load(application) {
18+
/**
19+
* @type {string}
20+
*/
21+
let langchainVersion;
22+
try {
23+
const langChainPackageJson = readFileSync(PATH_TO_LANGCHAIN_PKG_JSON).toString();
24+
langchainVersion = JSON.parse(langChainPackageJson).version;
25+
} catch (e) {
26+
throw new Error(`Error reading LangChain version for typedoc: ${e}`)
27+
}
28+
1429
/**
1530
* @type {Array<DeclarationReflection>}
1631
*/
@@ -22,6 +37,8 @@ function load(application) {
2237
);
2338
application.converter.on(Converter.EVENT_RESOLVE_BEGIN, onBeginResolve);
2439

40+
application.renderer.on(RendererEvent.BEGIN, onBeginRenderEvent);
41+
2542
const reflectionKindsToHide = [
2643
ReflectionKind.Property,
2744
ReflectionKind.Accessor,
@@ -34,6 +51,17 @@ function load(application) {
3451
ReflectionKind.TypeAlias,
3552
];
3653

54+
/**
55+
* @param {Context} context
56+
* @returns {void}
57+
*/
58+
function onBeginRenderEvent(context) {
59+
const { project } = context;
60+
if (project && langchainVersion) {
61+
project.packageVersion = langchainVersion;
62+
}
63+
}
64+
3765
/**
3866
* @param {Context} context
3967
* @returns {void}
@@ -64,6 +92,12 @@ function load(application) {
6492
reflectionsToHide.push(reflection);
6593
}
6694
}
95+
if (reflection.name.includes("/src")) {
96+
reflection.name = reflection.name.replace("/src", "")
97+
}
98+
if (reflection.name.startsWith("libs/")) {
99+
reflection.name = reflection.name.replace("libs/", "")
100+
}
67101
}
68102
}
69103

0 commit comments

Comments
 (0)