From a9409a5d5722c840d08781e7882d60a305bd163b Mon Sep 17 00:00:00 2001 From: Brace Sproul Date: Thu, 16 May 2024 10:33:58 -0700 Subject: [PATCH] docs[minor]: Match py how to index page (#5414) * docs[minor]: Match py how to index page * chore: lint files --- docs/core_docs/docs/how_to/index.mdx | 273 ++++++++++++++------------- 1 file changed, 139 insertions(+), 134 deletions(-) diff --git a/docs/core_docs/docs/how_to/index.mdx b/docs/core_docs/docs/how_to/index.mdx index cc045c1d8615..4d65f28d22b5 100644 --- a/docs/core_docs/docs/how_to/index.mdx +++ b/docs/core_docs/docs/how_to/index.mdx @@ -3,169 +3,175 @@ sidebar_position: 0 sidebar_class_name: hidden --- -# How-to Guides +# How-to guides -Here you'll find short answers to “How do I….?” types of questions. -These how-to guides don't cover topics in depth - you'll find that material in the [Tutorials](/docs/tutorials) and the [API Reference](https://api.js.langchain.com). -However, these guides will help you quickly accomplish common tasks. +Here you'll find answers to “How do I….?” types of questions. +These guides are _goal-oriented_ and _concrete_; they're meant to help you complete a specific task. +For conceptual explanations see [Conceptual Guides](/docs/concepts/). +For end-to-end walkthroughs see [Tutorials](/docs/tutorials). +For comprehensive descriptions of every class and function see [API Reference](https://v2.api.js.langchain.com/). ## Installation -- [How to: install LangChain packages](/docs/how_to/installation) +- [How to: install LangChain packages](/docs/how_to/installation/) -## Core Functionality +## Key features -This covers functionality that is core to using LangChain +This highlights functionality that is core to using LangChain. -- [How to return structured data from an LLM](/docs/how_to/structured_output/) -- [How to use a chat model to call tools](/docs/how_to/tool_calling/) -- [How to stream](/docs/how_to/streaming) -- [How to debug your LLM apps](/docs/how_to/debugging/) +- [How to: return structured data from an LLM](/docs/how_to/structured_output/) +- [How to: use a chat model to call tools](/docs/how_to/tool_calling/) +- [How to: stream runnables](/docs/how_to/streaming) +- [How to: debug your LLM apps](/docs/how_to/debugging/) ## LangChain Expression Language (LCEL) -LangChain Expression Language a way to create arbitrary custom chains. +LangChain Expression Language is a way to create arbitrary custom chains. It is built on the Runnable protocol. -- [How to combine multiple runnables into a chain](/docs/how_to/sequence) -- [How to invoke runnables in parallel](/docs/how_to/parallel/) -- [How to attach runtime arguments to a runnable](/docs/how_to/binding/) -- [How to run custom functions](/docs/how_to/functions) -- [How to pass through arguments from one step to the next](/docs/how_to/passthrough) -- [How to add values to a chain's state](/docs/how_to/assign) -- [How to add message history](/docs/how_to/message_history) -- [How to route execution within a chain](/docs/how_to/routing) -- [How to add fallbacks](/docs/how_to/fallbacks) +- [How to: chain runnables](/docs/how_to/sequence) +- [How to: stream runnables](/docs/how_to/streaming) +- [How to: invoke runnables in parallel](/docs/how_to/parallel/) +- [How to: attach runtime arguments to a runnable](/docs/how_to/binding/) +- [How to: run custom functions](/docs/how_to/functions) +- [How to: pass through arguments from one step to the next](/docs/how_to/passthrough) +- [How to: add values to a chain's state](/docs/how_to/assign) +- [How to: add message history](/docs/how_to/message_history) +- [How to: route execution within a chain](/docs/how_to/routing) +- [How to: inspect runnables](/docs/how_to/inspect) +- [How to: add fallbacks](/docs/how_to/fallbacks) ## Components These are the core building blocks you can use when building applications. -### Prompt Templates +### Prompt templates Prompt Templates are responsible for formatting user input into a format that can be passed to a language model. -- [How to use few shot examples](/docs/how_to/few_shot_examples) -- [How to use few shot examples in chat models](/docs/how_to/few_shot_examples_chat/) -- [How to partially format prompt templates](/docs/how_to/prompts_partial) -- [How to compose prompts together](/docs/how_to/prompts_composition) +- [How to: use few shot examples](/docs/how_to/few_shot_examples) +- [How to: use few shot examples in chat models](/docs/how_to/few_shot_examples_chat/) +- [How to: partially format prompt templates](/docs/how_to/prompts_partial) +- [How to: compose prompts together](/docs/how_to/prompts_composition) -### Example Selectors +### Example selectors Example Selectors are responsible for selecting the correct few shot examples to pass to the prompt. -- [How to use example selectors](/docs/how_to/example_selectors) -- [How to select examples by length](/docs/how_to/example_selectors_length_based) -- [How to select examples by semantic similarity](/docs/how_to/example_selectors_similarity) +- [How to: use example selectors](/docs/how_to/example_selectors) +- [How to: select examples by length](/docs/how_to/example_selectors_length_based) +- [How to: select examples by semantic similarity](/docs/how_to/example_selectors_similarity) -### Chat Models +### Chat models Chat Models are newer forms of language models that take messages in and output a message. -- [How to do function/tool calling](/docs/how_to/tool_calling) -- [How to get models to return structured output](/docs/how_to/structured_output) -- [How to cache model responses](/docs/how_to/chat_model_caching) -- [How to get log probabilities from model calls](/docs/how_to/logprobs) -- [How to create a custom chat model class](/docs/how_to/custom_chat_model) -- [How to stream a response back](/docs/how_to/chat_streaming) -- [How to track token usage](/docs/how_to/chat_token_usage_tracking) +- [How to: do function/tool calling](/docs/how_to/tool_calling) +- [How to: get models to return structured output](/docs/how_to/structured_output) +- [How to: cache model responses](/docs/how_to/chat_model_caching) +- [How to: get log probabilities](/docs/how_to/logprobs) +- [How to: create a custom chat model class](/docs/how_to/custom_chat_model) +- [How to: stream a response back](/docs/how_to/chat_streaming) +- [How to: track token usage](/docs/how_to/chat_token_usage_tracking) ### LLMs What LangChain calls LLMs are older forms of language models that take a string in and output a string. -- [How to cache model responses](/docs/how_to/llm_caching) -- [How to create a custom LLM class](/docs/how_to/custom_llm) -- [How to stream a response back](/docs/how_to/streaming_llm) -- [How to track token usage](/docs/how_to/llm_token_usage_tracking) +- [How to: cache model responses](/docs/how_to/llm_caching) +- [How to: create a custom LLM class](/docs/how_to/custom_llm) +- [How to: stream a response back](/docs/how_to/streaming_llm) +- [How to: track token usage](/docs/how_to/llm_token_usage_tracking) -### Output Parsers +### Output parsers Output Parsers are responsible for taking the output of an LLM and parsing into more structured format. -- [How to use output parsers to parse an LLM response into structured format](/docs/how_to/output_parser_structured) -- [How to parse JSON output](/docs/how_to/output_parser_json) -- [How to parse XML output](/docs/how_to/output_parser_xml) -- [How to parse YAML output](/docs/how_to/output_parser_yaml) -- [How to retry when output parsing errors occur](/docs/how_to/output_parser_retry) -- [How to try to fix errors in output parsing](/docs/how_to/output_parser_fixing) -- [How to write a custom output parser class](/docs/how_to/output_parser_custom) +- [How to: use output parsers to parse an LLM response into structured format](/docs/how_to/output_parser_structured) +- [How to: parse JSON output](/docs/how_to/output_parser_json) +- [How to: parse XML output](/docs/how_to/output_parser_xml) +- [How to: parse YAML output](/docs/how_to/output_parser_yaml) +- [How to: retry when output parsing errors occur](/docs/how_to/output_parser_retry) +- [How to: try to fix errors in output parsing](/docs/how_to/output_parser_fixing) +- [How to: write a custom output parser class](/docs/how_to/output_parser_custom) -### Document Loaders +### Document loaders Document Loaders are responsible for loading documents from a variety of sources. -- [How to load CSV data](/docs/how_to/document_loader_csv) -- [How to load data from a directory](/docs/how_to/document_loader_directory) -- [How to load HTML data](/docs/how_to/document_loader_html) -- [How to load JSON data](/docs/how_to/document_loader_json) -- [How to load Markdown data](/docs/how_to/document_loader_markdown) -- [How to load Microsoft Office data](/docs/how_to/document_loader_office_file) -- [How to load PDF files](/docs/how_to/document_loader_pdf) -- [How to write a custom document loader](/docs/how_to/document_loader_custom) +- [How to: load CSV data](/docs/how_to/document_loader_csv) +- [How to: load data from a directory](/docs/how_to/document_loader_directory) +- [How to: load HTML data](/docs/how_to/document_loader_html) +- [How to: load JSON data](/docs/how_to/document_loader_json) +- [How to: load Markdown data](/docs/how_to/document_loader_markdown) +- [How to: load Microsoft Office data](/docs/how_to/document_loader_office_file) +- [How to: load PDF files](/docs/how_to/document_loader_pdf) +- [How to: write a custom document loader](/docs/how_to/document_loader_custom) -### Text Splitters +### Text splitters Text Splitters take a document and split into chunks that can be used for retrieval. -- [How to recursively split text](/docs/how_to/recursive_text_splitter) -- [How to split by HTML headers](/docs/how_to/HTML_header_metadata_splitter) -- [How to split by HTML sections](/docs/how_to/HTML_section_aware_splitter) -- [How to split by character](/docs/how_to/character_text_splitter) -- [How to split code](/docs/how_to/code_splitter) -- [How to split Markdown by headers](/docs/how_to/markdown_header_metadata_splitter) -- [How to recursively split JSON](/docs/how_to/recursive_json_splitter) -- [How to split text into semantic chunks](/docs/how_to/semantic-chunker) -- [How to split by tokens](/docs/how_to/split_by_token) +- [How to: recursively split text](/docs/how_to/recursive_text_splitter) +- [How to: split by HTML headers](/docs/how_to/HTML_header_metadata_splitter) +- [How to: split by HTML sections](/docs/how_to/HTML_section_aware_splitter) +- [How to: split by character](/docs/how_to/character_text_splitter) +- [How to: split code](/docs/how_to/code_splitter) +- [How to: split Markdown by headers](/docs/how_to/markdown_header_metadata_splitter) +- [How to: recursively split JSON](/docs/how_to/recursive_json_splitter) +- [How to: split text into semantic chunks](/docs/how_to/semantic-chunker) +- [How to: split by tokens](/docs/how_to/split_by_token) -### Embedding Models +### Embedding models Embedding Models take a piece of text and create a numerical representation of it. -- [How to embed text data](/docs/how_to/embed_text) -- [How to cache embedding results](/docs/how_to/caching_embeddings) +- [How to: embed text data](/docs/how_to/embed_text) +- [How to: cache embedding results](/docs/how_to/caching_embeddings) -### Vector Stores +### Vector stores -Vector Stores are databases that can efficiently store and retrieve embeddings. +Vector stores are databases that can efficiently store and retrieve embeddings. -- [How to use a vector store to retrieve data](/docs/how_to/vectorstores) +- [How to: use a vector store to retrieve data](/docs/how_to/vectorstores) ### Retrievers Retrievers are responsible for taking a query and returning relevant documents. -- [How use a vector store to retrieve data](/docs/how_to/vectorstore_retriever) -- [How to generate multiple queries to retrieve data for](/docs/how_to/MultiQueryRetriever) -- [How to use contextual compression to compress the data retrieved](/docs/how_to/contextual_compression) -- [How to write a custom retriever class](/docs/how_to/custom_retriever) -- [How to combine the results from multiple retrievers](/docs/how_to/ensemble_retriever) -- [How to reorder retrieved results to put most relevant documents not in the middle](/docs/how_to/long_context_reorder) -- [How to generate multiple embeddings per document](/docs/how_to/multi_vector) -- [How to retrieve the whole document for a chunk](/docs/how_to/parent_document_retriever) -- [How to generate metadata filters](/docs/how_to/self_query) -- [How to create a time-weighted retriever](/docs/how_to/time_weighted_vectorstore) -- [How to use a Matryoshka retriever](/docs/how_to/matryoshka_retriever) +- [How to: use a vector store to retrieve data](/docs/how_to/vectorstore_retriever) +- [How to: generate multiple queries to retrieve data for](/docs/how_to/MultiQueryRetriever) +- [How to: use contextual compression to compress the data retrieved](/docs/how_to/contextual_compression) +- [How to: write a custom retriever class](/docs/how_to/custom_retriever) +- [How to: add similarity scores to retriever results](/docs/how_to/add_scores_retriever) +- [How to: combine the results from multiple retrievers](/docs/how_to/ensemble_retriever) +- [How to: reorder retrieved results to put most relevant documents not in the middle](/docs/how_to/long_context_reorder) +- [How to: generate multiple embeddings per document](/docs/how_to/multi_vector) +- [How to: retrieve the whole document for a chunk](/docs/how_to/parent_document_retriever) +- [How to: generate metadata filters](/docs/how_to/self_query) +- [How to: create a time-weighted retriever](/docs/how_to/time_weighted_vectorstore) +- [How to: use a Matryoshka retriever](/docs/how_to/matryoshka_retriever) ### Indexing Indexing is the process of keeping your vectorstore in-sync with the underlying data source. -- [How to reindex data to keep your vectorstore in-sync with the underlying data source](/docs/how_to/indexing) +- [How to: reindex data to keep your vectorstore in-sync with the underlying data source](/docs/how_to/indexing) ### Tools LangChain Tools contain a description of the tool (to pass to the language model) as well as the implementation of the function to call). -- [How to use LangChain tools](/docs/how_to/tools) -- [How to use a chat model to call tools](/docs/how_to/tool_calling/) -- [How to use LangChain toolkits](/docs/how_to/toolkits) -- [How to define a custom tool](/docs/how_to/custom_tools) -- [How to convert LangChain tools to OpenAI functions](/docs/how_to/tools_as_openai_functions) -- [How to use tools without function calling](/docs/how_to/tools_prompting) -- [How to let the LLM choose between multiple tools](/docs/how_to/tools_multiple) -- [How to add a human in the loop to tool usage](/docs/how_to/tools_human) -- [How to do parallel tool use](/docs/how_to/tools_parallel) -- [How to handle errors when calling tools](/docs/how_to/tools_error) +- [How to: use LangChain tools](/docs/how_to/tools) +- [How to: use a chat model to call tools](/docs/how_to/tool_calling/) +- [How to: use LangChain toolkits](/docs/how_to/toolkits) +- [How to: define a custom tool](/docs/how_to/custom_tools) +- [How to: convert LangChain tools to OpenAI functions](/docs/how_to/tools_as_openai_functions) +- [How to: use tools without function calling](/docs/how_to/tools_prompting) +- [How to: let the LLM choose between multiple tools](/docs/how_to/tools_multiple) +- [How to: add a human in the loop to tool usage](/docs/how_to/tools_human) +- [How to: do parallel tool use](/docs/how_to/tools_parallel) +- [How to: handle errors when calling tools](/docs/how_to/tools_error) +- [How to: call tools using multi-modal data](/docs/how_to/tool_calls_multi_modal) ### Agents @@ -175,22 +181,21 @@ For in depth how-to guides for agents, please check out [LangGraph](https://gith ::: -- [How to use legacy LangChain Agents (AgentExecutor)](/docs/how_to/agent_executor) -- [How to migrate from legacy LangChain agents to LangGraph](/docs/how_to/migrate_agent) +- [How to: use legacy LangChain Agents (AgentExecutor)](/docs/how_to/agent_executor) +- [How to: migrate from legacy LangChain agents to LangGraph](/docs/how_to/migrate_agent) ### Custom All of LangChain components can easily be extended to support your own versions. -- [How to create a custom chat model class](/docs/how_to/custom_chat_model) -- [How to create a custom LLM class](/docs/how_to/custom_llm) -- [How to write a custom retriever class](/docs/how_to/custom_retriever) -- [How to write a custom document loader](/docs/how_to/document_loader_custom) -- [How to write a custom output parser class](/docs/how_to/output_parser_custom) +- [How to: create a custom chat model class](/docs/how_to/custom_chat_model) +- [How to: create a custom LLM class](/docs/how_to/custom_llm) +- [How to: write a custom retriever class](/docs/how_to/custom_retriever) +- [How to: write a custom document loader](/docs/how_to/document_loader_custom) +- [How to: write a custom output parser class](/docs/how_to/output_parser_custom) +- [How to: define a custom tool](/docs/how_to/custom_tools) -- [How to define a custom tool](/docs/how_to/custom_tools) - -## Use Cases +## Use cases These guides cover use-case specific details. @@ -198,53 +203,53 @@ These guides cover use-case specific details. Retrieval Augmented Generation (RAG) is a way to connect LLMs to external sources of data. -- [How to add chat history](/docs/how_to/qa_chat_history_how_to/) -- [How to stream](/docs/how_to/qa_streaming/) -- [How to return sources](/docs/how_to/qa_sources/) -- [How to return citations](/docs/how_to/qa_citations/) -- [How to do per-user retrieval](/docs/how_to/qa_per_user/) +- [How to: add chat history](/docs/how_to/qa_chat_history_how_to/) +- [How to: stream](/docs/how_to/qa_streaming/) +- [How to: return sources](/docs/how_to/qa_sources/) +- [How to: return citations](/docs/how_to/qa_citations/) +- [How to: do per-user retrieval](/docs/how_to/qa_per_user/) ### Extraction Extraction is when you use LLMs to extract structured information from unstructured text. -- [How to use reference examples](/docs/how_to/extraction_examples/) -- [How to handle long text](/docs/how_to/extraction_long_text/) -- [How to do extraction without using function calling](/docs/how_to/extraction_parse) +- [How to: use reference examples](/docs/how_to/extraction_examples/) +- [How to: handle long text](/docs/how_to/extraction_long_text/) +- [How to: do extraction without using function calling](/docs/how_to/extraction_parse) ### Chatbots Chatbots involve using an LLM to have a conversation. -- [How to manage memory](/docs/how_to/chatbots_memory) -- [How to do retrieval](/docs/how_to/chatbots_retrieval) -- [How to use tools](/docs/how_to/chatbots_tools) +- [How to: manage memory](/docs/how_to/chatbots_memory) +- [How to: do retrieval](/docs/how_to/chatbots_retrieval) +- [How to: use tools](/docs/how_to/chatbots_tools) -### Query Analysis +### Query analysis Query Analysis is the task of using an LLM to generate a query to send to a retriever. -- [How to add examples to the prompt](/docs/how_to/query_few_shot) -- [How to handle cases where no queries are generated](/docs/how_to/query_no_queries) -- [How to handle multiple queries](/docs/how_to/query_multiple_queries) -- [How to handle multiple retrievers](/docs/how_to/query_multiple_retrievers) -- [How to construct filters](/docs/how_to/query_constructing_filters) -- [How to deal with high cardinality categorical variables](/docs/how_to/query_high_cardinality) +- [How to: add examples to the prompt](/docs/how_to/query_few_shot) +- [How to: handle cases where no queries are generated](/docs/how_to/query_no_queries) +- [How to: handle multiple queries](/docs/how_to/query_multiple_queries) +- [How to: handle multiple retrievers](/docs/how_to/query_multiple_retrievers) +- [How to: construct filters](/docs/how_to/query_constructing_filters) +- [How to: deal with high cardinality categorical variables](/docs/how_to/query_high_cardinality) ### Q&A over SQL + CSV You can use LLMs to do question answering over tabular data. -- [How to use prompting to improve results](/docs/how_to/sql_prompting) -- [How to do query validation](/docs/how_to/sql_query_checking) -- [How to deal with large databases](/docs/how_to/sql_large_db) -- [How to deal with CSV files](/docs/how_to/sql_csv) +- [How to: use prompting to improve results](/docs/how_to/sql_prompting) +- [How to: do query validation](/docs/how_to/sql_query_checking) +- [How to: deal with large databases](/docs/how_to/sql_large_db) +- [How to: deal with CSV files](/docs/how_to/sql_csv) -### Q&A over Graph Databases +### Q&A over graph databases You can use an LLM to do question answering over graph databases. -- [How to map values to a database](/docs/how_to/graph_mapping) -- [How to add a semantic layer over the database](/docs/how_to/graph_semantic) -- [How to improve results with prompting](/docs/how_to/graph_prompting) -- [How to construct knowledge graphs](/docs/how_to/graph_constructing) +- [How to: map values to a database](/docs/how_to/graph_mapping) +- [How to: add a semantic layer over the database](/docs/how_to/graph_semantic) +- [How to: improve results with prompting](/docs/how_to/graph_prompting) +- [How to: construct knowledge graphs](/docs/how_to/graph_constructing)