langchain/templates
Akash A Desai b641be2edf
templates: Lanceb RAG template (#17809)
Thank you for contributing to LangChain!

- [x] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core,
experimental, etc. is being modified. Use "docs: ..." for purely docs
changes, "templates: ..." for template changes, "infra: ..." for CI
changes.
  - Example: "community: add foobar LLM"


- [x] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [x] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, hwchase17.

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
2024-03-01 18:52:50 +00:00
..
anthropic-iterative-search infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
basic-critique-revise templates: bump (#17074) 2024-02-05 17:12:12 -08:00
bedrock-jcvd templates: bump (#17074) 2024-02-05 17:12:12 -08:00
cassandra-entomology-rag infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
cassandra-synonym-caching docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
chain-of-note-wiki docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
chat-bot-feedback core[patch], langchain[patch], templates: move openai functions parsers to core (#18060) 2024-02-26 11:12:53 -08:00
cohere-librarian templates: bump (#17074) 2024-02-05 17:12:12 -08:00
csv-agent infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
docs pinecone[patch], docs: PineconeVectorStore, release 0.0.3 (#17896) 2024-02-22 08:24:08 -08:00
elastic-query-generator infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
extraction-anthropic-functions core[patch], langchain[patch], templates: move openai functions parsers to core (#18060) 2024-02-26 11:12:53 -08:00
extraction-openai-functions templates: bump (#17074) 2024-02-05 17:12:12 -08:00
gemini-functions-agent infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
guardrails-output-parser templates: bump (#17074) 2024-02-05 17:12:12 -08:00
hybrid-search-weaviate templates: bump (#17074) 2024-02-05 17:12:12 -08:00
hyde templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
llama2-functions templates: bump (#17074) 2024-02-05 17:12:12 -08:00
mongo-parent-document-retrieval templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
neo4j-advanced-rag templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
neo4j-cypher infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
neo4j-cypher-ft infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
neo4j-cypher-memory infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
neo4j-generation docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
neo4j-parent templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
neo4j-semantic-layer docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
neo4j-semantic-ollama docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
neo4j-vector-memory templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
nvidia-rag-canonical templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
openai-functions-agent infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
openai-functions-agent-gmail infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
openai-functions-tool-retrieval-agent docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
pii-protected-chatbot templates: bump (#17074) 2024-02-05 17:12:12 -08:00
pirate-speak templates: bump (#17074) 2024-02-05 17:12:12 -08:00
pirate-speak-configurable templates: bump (#17074) 2024-02-05 17:12:12 -08:00
plate-chain templates: bump (#17074) 2024-02-05 17:12:12 -08:00
propositional-retrieval templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
python-lint templates: bump (#17074) 2024-02-05 17:12:12 -08:00
rag-astradb infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-aws-bedrock infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-aws-kendra infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-chroma templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-chroma-multi-modal infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-chroma-multi-modal-multi-vector infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-chroma-private templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-codellama-fireworks templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-conversation templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-conversation-zep templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-elasticsearch templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-fusion pinecone[patch], docs: PineconeVectorStore, release 0.0.3 (#17896) 2024-02-22 08:24:08 -08:00
rag-gemini-multi-modal infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-google-cloud-sensitive-data-protection infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-google-cloud-vertexai-search infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-gpt-crawler templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-lancedb templates: Lanceb RAG template (#17809) 2024-03-01 18:52:50 +00:00
rag-matching-engine templates: bump (#17074) 2024-02-05 17:12:12 -08:00
rag-momento-vector-index templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-mongo templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-multi-index-fusion docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
rag-multi-index-router core[patch], langchain[patch], templates: move openai functions parsers to core (#18060) 2024-02-26 11:12:53 -08:00
rag-multi-modal-local templates: Update README.md - Fixing a typo (#17689) 2024-02-22 13:19:37 -08:00
rag-multi-modal-mv-local infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-ollama-multi-query templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-opensearch infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
rag-pinecone templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-pinecone-multi-query templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-pinecone-rerank templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-redis templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-self-query templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-semi-structured templates: 0.1 bump (#15648) 2024-01-06 18:31:46 -08:00
rag-singlestoredb templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-supabase templates: bump (#17074) 2024-02-05 17:12:12 -08:00
rag-timescale-conversation templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-timescale-hybrid-search-time templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
rag-vectara templates: bump (#17074) 2024-02-05 17:12:12 -08:00
rag-vectara-multiquery templates: bump (#17074) 2024-02-05 17:12:12 -08:00
rag-weaviate templates: use langchain-text-splitters (#18360) 2024-03-01 03:00:58 +00:00
research-assistant infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
retrieval-agent docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
retrieval-agent-fireworks docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
rewrite-retrieve-read templates: bump (#17074) 2024-02-05 17:12:12 -08:00
robocorp-action-server templates: bump (#17074) 2024-02-05 17:12:12 -08:00
self-query-qdrant docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
self-query-supabase templates: bump (#17074) 2024-02-05 17:12:12 -08:00
shopping-assistant templates: bump (#17074) 2024-02-05 17:12:12 -08:00
skeleton-of-thought templates: bump (#17074) 2024-02-05 17:12:12 -08:00
solo-performance-prompting-agent docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
sql-llama2 templates: bump (#17074) 2024-02-05 17:12:12 -08:00
sql-llamacpp infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
sql-ollama templates: bump (#17074) 2024-02-05 17:12:12 -08:00
sql-pgvector templates: bump (#17074) 2024-02-05 17:12:12 -08:00
sql-research-assistant infra: add print rule to ruff (#16221) 2024-02-09 16:13:30 -08:00
stepback-qa-prompting templates: bump (#17074) 2024-02-05 17:12:12 -08:00
summarize-anthropic templates: bump (#17074) 2024-02-05 17:12:12 -08:00
vertexai-chuck-norris templates: bump (#17074) 2024-02-05 17:12:12 -08:00
xml-agent docs, templates: update schema imports to core (#17885) 2024-02-22 15:58:44 -08:00
.gitignore
Makefile core[patch], langchain[patch]: fix required deps (#14373) 2023-12-07 14:24:58 -08:00
poetry.lock templates: bump (#17074) 2024-02-05 17:12:12 -08:00
pyproject.toml infra, multiple: Upgrade configuration for Ruff v0.2.0 (#16905) 2024-02-09 14:28:02 -08:00
README.md Batch update of alt text and title attributes for images in md/mdx files across repo (#15357) 2024-01-12 14:37:48 -08: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. 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.