You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
langchain/templates
Bagatur 3925071dd6
langchain[patch], templates[patch]: fix multi query retriever, web re… (#17434)
…search retriever

Fixes #17352
4 months ago
..
anthropic-iterative-search infra: add print rule to ruff (#16221) 4 months ago
basic-critique-revise templates: bump (#17074) 4 months ago
bedrock-jcvd templates: bump (#17074) 4 months ago
cassandra-entomology-rag infra: add print rule to ruff (#16221) 4 months ago
cassandra-synonym-caching templates: bump (#17074) 4 months ago
chain-of-note-wiki templates: bump (#17074) 4 months ago
chat-bot-feedback templates: bump (#17074) 4 months ago
cohere-librarian templates: bump (#17074) 4 months ago
csv-agent infra: add print rule to ruff (#16221) 4 months ago
docs Batch update of alt text and title attributes for images in md/mdx files across repo (#15357) 5 months ago
elastic-query-generator infra: add print rule to ruff (#16221) 4 months ago
extraction-anthropic-functions templates: bump (#17074) 4 months ago
extraction-openai-functions templates: bump (#17074) 4 months ago
gemini-functions-agent infra: add print rule to ruff (#16221) 4 months ago
guardrails-output-parser templates: bump (#17074) 4 months ago
hybrid-search-weaviate templates: bump (#17074) 4 months ago
hyde templates: bump (#17074) 4 months ago
llama2-functions templates: bump (#17074) 4 months ago
mongo-parent-document-retrieval templates: bump (#17074) 4 months ago
neo4j-advanced-rag infra: add print rule to ruff (#16221) 4 months ago
neo4j-cypher infra: add print rule to ruff (#16221) 4 months ago
neo4j-cypher-ft infra: add print rule to ruff (#16221) 4 months ago
neo4j-cypher-memory infra: add print rule to ruff (#16221) 4 months ago
neo4j-generation infra: add print rule to ruff (#16221) 4 months ago
neo4j-parent infra: add print rule to ruff (#16221) 4 months ago
neo4j-semantic-layer infra: add print rule to ruff (#16221) 4 months ago
neo4j-semantic-ollama infra: add print rule to ruff (#16221) 4 months ago
neo4j-vector-memory infra: add print rule to ruff (#16221) 4 months ago
nvidia-rag-canonical infra: add print rule to ruff (#16221) 4 months ago
openai-functions-agent infra: add print rule to ruff (#16221) 4 months ago
openai-functions-agent-gmail infra: add print rule to ruff (#16221) 4 months ago
openai-functions-tool-retrieval-agent templates: bump (#17074) 4 months ago
pii-protected-chatbot templates: bump (#17074) 4 months ago
pirate-speak templates: bump (#17074) 4 months ago
pirate-speak-configurable templates: bump (#17074) 4 months ago
plate-chain templates: bump (#17074) 4 months ago
propositional-retrieval templates: bump (#17074) 4 months ago
python-lint templates: bump (#17074) 4 months ago
rag-astradb infra: add print rule to ruff (#16221) 4 months ago
rag-aws-bedrock infra: add print rule to ruff (#16221) 4 months ago
rag-aws-kendra infra: add print rule to ruff (#16221) 4 months ago
rag-chroma templates: bump (#17074) 4 months ago
rag-chroma-multi-modal infra: add print rule to ruff (#16221) 4 months ago
rag-chroma-multi-modal-multi-vector infra: add print rule to ruff (#16221) 4 months ago
rag-chroma-private templates: bump (#17074) 4 months ago
rag-codellama-fireworks templates: bump (#17074) 4 months ago
rag-conversation templates: bump (#17074) 4 months ago
rag-conversation-zep templates: bump (#17074) 4 months ago
rag-elasticsearch infra: add print rule to ruff (#16221) 4 months ago
rag-fusion infra: add print rule to ruff (#16221) 4 months ago
rag-gemini-multi-modal infra: add print rule to ruff (#16221) 4 months ago
rag-google-cloud-sensitive-data-protection infra: add print rule to ruff (#16221) 4 months ago
rag-google-cloud-vertexai-search infra: add print rule to ruff (#16221) 4 months ago
rag-gpt-crawler templates: bump (#17074) 4 months ago
rag-matching-engine templates: bump (#17074) 4 months ago
rag-momento-vector-index templates: bump (#17074) 4 months ago
rag-mongo templates: bump (#17074) 4 months ago
rag-multi-index-fusion templates: bump (#17074) 4 months ago
rag-multi-index-router templates: bump (#17074) 4 months ago
rag-multi-modal-local infra: add print rule to ruff (#16221) 4 months ago
rag-multi-modal-mv-local infra: add print rule to ruff (#16221) 4 months ago
rag-ollama-multi-query langchain[patch], templates[patch]: fix multi query retriever, web re… (#17434) 4 months ago
rag-opensearch infra: add print rule to ruff (#16221) 4 months ago
rag-pinecone templates: bump (#17074) 4 months ago
rag-pinecone-multi-query templates: bump (#17074) 4 months ago
rag-pinecone-rerank templates: bump (#17074) 4 months ago
rag-redis infra: add print rule to ruff (#16221) 4 months ago
rag-self-query infra: add print rule to ruff (#16221) 4 months ago
rag-semi-structured templates: 0.1 bump (#15648) 5 months ago
rag-singlestoredb templates: bump (#17074) 4 months ago
rag-supabase templates: bump (#17074) 4 months ago
rag-timescale-conversation infra: add print rule to ruff (#16221) 4 months ago
rag-timescale-hybrid-search-time infra: add print rule to ruff (#16221) 4 months ago
rag-vectara templates: bump (#17074) 4 months ago
rag-vectara-multiquery templates: bump (#17074) 4 months ago
rag-weaviate templates: bump (#17074) 4 months ago
research-assistant infra: add print rule to ruff (#16221) 4 months ago
retrieval-agent templates: bump (#17074) 4 months ago
retrieval-agent-fireworks cli[patch]: copyright 2024 default (#17204) 4 months ago
rewrite-retrieve-read templates: bump (#17074) 4 months ago
robocorp-action-server templates: bump (#17074) 4 months ago
self-query-qdrant templates: bump (#17074) 4 months ago
self-query-supabase templates: bump (#17074) 4 months ago
shopping-assistant templates: bump (#17074) 4 months ago
skeleton-of-thought templates: bump (#17074) 4 months ago
solo-performance-prompting-agent templates: bump (#17074) 4 months ago
sql-llama2 templates: bump (#17074) 4 months ago
sql-llamacpp infra: add print rule to ruff (#16221) 4 months ago
sql-ollama templates: bump (#17074) 4 months ago
sql-pgvector templates: bump (#17074) 4 months ago
sql-research-assistant infra: add print rule to ruff (#16221) 4 months ago
stepback-qa-prompting templates: bump (#17074) 4 months ago
summarize-anthropic templates: bump (#17074) 4 months ago
vertexai-chuck-norris templates: bump (#17074) 4 months ago
xml-agent infra: add print rule to ruff (#16221) 4 months ago
.gitignore Adds linter in templates (#12321) 7 months ago
Makefile core[patch], langchain[patch]: fix required deps (#14373) 6 months ago
README.md Batch update of alt text and title attributes for images in md/mdx files across repo (#15357) 5 months ago
poetry.lock templates: bump (#17074) 4 months ago
pyproject.toml infra, multiple: Upgrade configuration for Ruff v0.2.0 (#16905) 4 months ago

README.md

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. LangSmith is currently in private beta, you can sign up 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.