langchain/templates
Brice Fotzo 034a8c7c1b
community: support advanced text extraction options for pdf documents (#20265)
**Description:** 
- Updated constructors in PyPDFParser and PyPDFLoader to handle
`extraction_mode` and additional kwargs, aligning with the capabilities
of `PageObject.extract_text()` from pypdf.

- Added `test_pypdf_loader_with_layout` along with a corresponding
example text file to validate layout extraction from PDFs.

**Issue:** fixes #19735 

**Dependencies:** This change requires updating the pypdf dependency
from version 3.4.0 to at least 4.0.0.

Additional changes include the addition of a new test
test_pypdf_loader_with_layout and an example text file to ensure the
functionality of layout extraction from PDFs aligns with the new
capabilities.

---------

Co-authored-by: Bagatur <22008038+baskaryan@users.noreply.github.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
Co-authored-by: Erick Friis <erick@langchain.dev>
2024-07-17 20:47:09 +00:00
..
anthropic-iterative-search templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
basic-critique-revise templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
bedrock-jcvd templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
cassandra-entomology-rag templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
cassandra-synonym-caching templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
chain-of-note-wiki templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
chat-bot-feedback templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
cohere-librarian docs: model parameter mandatory for cohere embedding and rerank (#23349) 2024-07-12 23:07:28 +00:00
csv-agent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
docs pinecone[patch], docs: PineconeVectorStore, release 0.0.3 (#17896) 2024-02-22 08:24:08 -08:00
elastic-query-generator templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
extraction-anthropic-functions templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
extraction-openai-functions templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
gemini-functions-agent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
guardrails-output-parser templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
hybrid-search-weaviate templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
hyde templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
intel-rag-xeon spelling errors in words (#23559) 2024-06-27 17:16:22 +00:00
llama2-functions templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
mongo-parent-document-retrieval community: support advanced text extraction options for pdf documents (#20265) 2024-07-17 20:47:09 +00:00
neo4j-advanced-rag templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
neo4j-cypher templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
neo4j-cypher-ft templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
neo4j-cypher-memory templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
neo4j-generation templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
neo4j-parent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
neo4j-semantic-layer Correction of incorrect words (#23557) 2024-06-27 15:13:15 +00:00
neo4j-semantic-ollama docs: Improve neo4j semantic templates (#23939) 2024-07-12 23:08:25 +00:00
neo4j-vector-memory templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
nvidia-rag-canonical community: support advanced text extraction options for pdf documents (#20265) 2024-07-17 20:47:09 +00:00
openai-functions-agent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
openai-functions-agent-gmail templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
openai-functions-tool-retrieval-agent docs: template readme update, fix docstring typo in a runnable (#24002) 2024-07-09 14:03:31 -07:00
pii-protected-chatbot templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
pirate-speak templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
pirate-speak-configurable templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
plate-chain templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
propositional-retrieval templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
python-lint templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-astradb templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-aws-bedrock templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-aws-kendra templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-azure-search templates: readme langsmith not private beta (#20173) 2024-04-12 13:08:10 -07:00
rag-chroma templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-chroma-multi-modal templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-chroma-multi-modal-multi-vector templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-chroma-private templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-codellama-fireworks templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-conversation templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-conversation-zep templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-elasticsearch templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-fusion templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-gemini-multi-modal templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-google-cloud-sensitive-data-protection templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-google-cloud-vertexai-search templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-gpt-crawler templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-jaguardb templates: readme langsmith not private beta (#20173) 2024-04-12 13:08:10 -07:00
rag-lancedb templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-lantern templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-matching-engine templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-milvus templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-momento-vector-index templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-mongo templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-multi-index-fusion templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-multi-index-router templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-multi-modal-local templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-multi-modal-mv-local templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-ollama-multi-query templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-opensearch Correction of incorrect words (#23557) 2024-06-27 15:13:15 +00:00
rag-pinecone templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-pinecone-multi-query templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-pinecone-rerank templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-redis templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-redis-multi-modal-multi-vector templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-self-query templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-semi-structured templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-singlestoredb templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-supabase templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-timescale-conversation templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-timescale-hybrid-search-time templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-vectara templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-vectara-multiquery templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rag-weaviate templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
research-assistant templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
retrieval-agent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
retrieval-agent-fireworks templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
rewrite-retrieve-read templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
robocorp-action-server templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
self-query-qdrant templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
self-query-supabase templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
shopping-assistant templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
skeleton-of-thought templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
solo-performance-prompting-agent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
sql-llama2 templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
sql-llamacpp templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
sql-ollama templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
sql-pgvector templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
sql-research-assistant templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
stepback-qa-prompting templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
summarize-anthropic templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
vertexai-chuck-norris templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
xml-agent templates: remove lockfiles (#22920) 2024-06-14 21:42:30 +00:00
.gitignore
Makefile
poetry.lock templates: bump lockfile deps (#19001) 2024-03-13 01:25:45 +00:00
pyproject.toml
README.md templates: readme langsmith not private beta (#20173) 2024-04-12 13:08:10 -07:00

LangChain Templates

LangChain Templates are the easiest and fastest way to build a production-ready LLM application. These templates serve as a set of reference architectures for a wide variety of popular LLM use cases. They are all in a standard format which make it easy to deploy them with LangServe.

🚩 We will be releasing a hosted version of LangServe for one-click deployments of LangChain applications. Sign up here to get on the waitlist.

Quick Start

To use, first install the LangChain CLI.

pip install -U langchain-cli

Next, create a new LangChain project:

langchain app new my-app

This will create a new directory called my-app with two folders:

  • app: This is where LangServe code will live
  • packages: This is where your chains or agents will live

To pull in an existing template as a package, you first need to go into your new project:

cd my-app

And you can the add a template as a project. In this getting started guide, we will add a simple pirate-speak project. All this project does is convert user input into pirate speak.

langchain app add pirate-speak

This will pull in the specified template into packages/pirate-speak

You will then be prompted if you want to install it. This is the equivalent of running pip install -e packages/pirate-speak. You should generally accept this (or run that same command afterwards). We install it with -e so that if you modify the template at all (which you likely will) the changes are updated.

After that, it will ask you if you want to generate route code for this project. This is code you need to add to your app to start using this chain. If we accept, we will see the following code generated:

from pirate_speak.chain import chain as pirate_speak_chain

add_routes(app, pirate_speak_chain, path="/pirate-speak")

You can now edit the template you pulled down. You can change the code files in packages/pirate-speak to use a different model, different prompt, different logic. Note that the above code snippet always expects the final chain to be importable as from pirate_speak.chain import chain, so you should either keep the structure of the package similar enough to respect that or be prepared to update that code snippet.

Once you have done as much of that as you want, it is In order to have LangServe use this project, you then need to modify app/server.py. Specifically, you should add the above code snippet to app/server.py so that file looks like:

from fastapi import FastAPI
from langserve import add_routes
from pirate_speak.chain import chain as pirate_speak_chain

app = FastAPI()

add_routes(app, pirate_speak_chain, path="/pirate-speak")

(Optional) Let's now configure LangSmith. LangSmith will help us trace, monitor and debug LangChain applications. You can sign up for LangSmith here. If you don't have access, you can skip this section

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # if not specified, defaults to "default"

For this particular application, we will use OpenAI as the LLM, so we need to export our OpenAI API key:

export OPENAI_API_KEY=sk-...

You can then spin up production-ready endpoints, along with a playground, by running:

langchain serve

This now gives a fully deployed LangServe application. For example, you get a playground out-of-the-box at http://127.0.0.1:8000/pirate-speak/playground/:

Screenshot of the LangServe Playground interface with input and output fields demonstrating pirate speak conversion.

Access API documentation at http://127.0.0.1:8000/docs

Screenshot of the API documentation interface showing available endpoints for the pirate-speak application.

Use the LangServe python or js SDK to interact with the API as if it were a regular Runnable.

from langserve import RemoteRunnable

api = RemoteRunnable("http://127.0.0.1:8000/pirate-speak")
api.invoke({"text": "hi"})

That's it for the quick start! You have successfully downloaded your first template and deployed it with LangServe.

Additional Resources

Index of Templates

Explore the many templates available to use - from advanced RAG to agents.

Contributing

Want to contribute your own template? It's pretty easy! These instructions walk through how to do that.

Launching LangServe from a Package

You can also launch LangServe from a package directly (without having to create a new project). These instructions cover how to do that.