mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-14 07:07:34 +00:00
add docs for templates (#12346)
This commit is contained in:
parent
28c39503eb
commit
8ec7aade9f
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "langchain-cli"
|
name = "langchain-cli"
|
||||||
version = "0.0.1rc2"
|
version = "0.0.3"
|
||||||
description = "CLI for interacting with LangChain"
|
description = "CLI for interacting with LangChain"
|
||||||
authors = ["Erick Friis <erick@langchain.dev>"]
|
authors = ["Erick Friis <erick@langchain.dev>"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
18
templates/CONTRIBUTING.md
Normal file
18
templates/CONTRIBUTING.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
To add a new project:
|
||||||
|
|
||||||
|
Make sure you have `langchain-cli` installed.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
pip install -U langchain-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a new package
|
||||||
|
|
||||||
|
```shell
|
||||||
|
langchain hub new $PROJECT_NAME
|
||||||
|
```
|
||||||
|
|
||||||
|
This will set up the skeleton of a package.
|
||||||
|
You can then edit the contents of the package as you desire.
|
@ -3,7 +3,11 @@
|
|||||||
A list of all template repos
|
A list of all template repos
|
||||||
|
|
||||||
⭐Retrieval Augmented Generation Chatbot: Build a chatbot over your data. Uses OpenAI and Pinecone.
|
⭐Retrieval Augmented Generation Chatbot: Build a chatbot over your data. Uses OpenAI and Pinecone.
|
||||||
|
|
||||||
⭐Extraction with OpenAI Functions: Do extraction of structured data from unstructured data. Uses OpenAI function calling.
|
⭐Extraction with OpenAI Functions: Do extraction of structured data from unstructured data. Uses OpenAI function calling.
|
||||||
|
|
||||||
⭐Local Retrieval Augmented Generation: Build a chatbot over your data. Uses only local tooling: Ollama, GPT4all, Chroma.
|
⭐Local Retrieval Augmented Generation: Build a chatbot over your data. Uses only local tooling: Ollama, GPT4all, Chroma.
|
||||||
|
|
||||||
⭐OpenAI Functions Agent: Build a chatbot that can take actions. Uses OpenAI function calling and Tavily.
|
⭐OpenAI Functions Agent: Build a chatbot that can take actions. Uses OpenAI function calling and Tavily.
|
||||||
|
|
||||||
⭐XML Agent: Build a chatbot that can take actions. Uses Anthropic and You.com.
|
⭐XML Agent: Build a chatbot that can take actions. Uses Anthropic and You.com.
|
||||||
|
@ -1,71 +1,74 @@
|
|||||||
# LangServe Hub
|
# LangServe Templates
|
||||||
|
|
||||||
Packages that can be easily hosted by LangServe using the `langserve` cli.
|
Templates for a fully functioning app that can be hosted by LangServe.
|
||||||
|
|
||||||
## Using LangServe Hub
|
## Usage
|
||||||
|
|
||||||
You can install the `langservehub` CLI and use it as follows:
|
To use, first install the LangChain CLI.
|
||||||
```bash
|
|
||||||
# install langservehub CLI
|
|
||||||
pip install --upgrade langservehub
|
|
||||||
|
|
||||||
langservehub new my-app
|
```shell
|
||||||
|
pip install -U langchain-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, install `langserve`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
pip install "langserve[all]"
|
||||||
|
```
|
||||||
|
|
||||||
|
Next, create a new LangChain project:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
langchain serve 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:
|
||||||
|
|
||||||
|
```shell
|
||||||
cd my-app
|
cd my-app
|
||||||
|
|
||||||
poetry install
|
|
||||||
|
|
||||||
# if you have problems with poe, use `poetry run poe ...` instead
|
|
||||||
|
|
||||||
# add the simple-pirate package
|
|
||||||
poe add --repo=pingpong-templates/hub simple-pirate
|
|
||||||
|
|
||||||
# adding other GitHub repo packages, defaults to repo root
|
|
||||||
poe add --repo=hwchase17/chain-of-verification
|
|
||||||
|
|
||||||
# with a custom api mount point (defaults to `/{package_name}`)
|
|
||||||
poe add --repo=pingpong-templates/hub simple-translator --api_path=/my/custom/path/translator
|
|
||||||
|
|
||||||
poe list
|
|
||||||
|
|
||||||
poe start
|
|
||||||
^C
|
|
||||||
|
|
||||||
# remove packages by their api path:
|
|
||||||
poe remove my/custom/path/translator
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Creating New Packages
|
And you can the add a template as a project
|
||||||
|
|
||||||
You can also create new packages with the `langservehub package new` command
|
```shell
|
||||||
|
langchain serve add $PROJECT_NAME
|
||||||
```bash
|
|
||||||
# starting from this directory in langserve-hub
|
|
||||||
langservehub package new simple-newpackage
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can edit the chain in `simple-newpackage/simple_newpackage/chain.py` and put up a PR!
|
This will pull in the specified template into `packages/$PROJECT_NAME`
|
||||||
|
|
||||||
Your package will be usable as `poe add --repo=pingpong-templates/hub simple-newpackage` when it's merged in.
|
You then need to install this package so you can use it in the langserve app:
|
||||||
|
|
||||||
## Data Format
|
```shell
|
||||||
|
pip install -e packages/$PROJECT_NAME
|
||||||
|
```
|
||||||
|
|
||||||
What makes these packages work?
|
We install it with `-e` so that if we modify the template at all (which we likely will) the changes are updated.
|
||||||
|
|
||||||
- Poetry
|
In order to have LangServe use this project, you then need to modify `app/server.py`.
|
||||||
- pyproject.toml files
|
Specifically, you should add something like:
|
||||||
|
|
||||||
### Installable Packages
|
```python
|
||||||
|
from fastapi import FastAPI
|
||||||
|
from langserve import add_routes
|
||||||
|
# This depends on the structure of the package you install
|
||||||
|
from my_project import chain
|
||||||
|
|
||||||
Everything is a Poetry package currently. This allows poetry to manage our dependencies for us :).
|
app = FastAPI()
|
||||||
|
|
||||||
In addition to normal keys in the `pyproject.toml` file, you'll notice an additional `tool.langserve` key ([link](https://github.com/langchain-ai/langserve-hub/blob/main/simple/pirate/pyproject.toml#L13-L15)).
|
add_routes(app, chain)
|
||||||
|
```
|
||||||
|
|
||||||
This allows us to identify which module and attribute to import as the chain/runnable for the langserve `add_routes` call.
|
You can then spin up production-ready endpoints, along with a playground, by running:
|
||||||
|
|
||||||
### Apps (with installed langserve packages)
|
```shell
|
||||||
|
python app/server.py
|
||||||
|
```
|
||||||
|
|
||||||
Let's say you add the pirate package with `poe add --repo=pingpong-templates/hub simple-pirate`.
|
## Adding a template
|
||||||
|
|
||||||
First this downloads the simple-pirate package to pirate
|
See [here](CONTRIBUTING.md)
|
||||||
|
|
||||||
Then this adds a `poetry` path dependency, which gets picked up from `add_package_routes`.
|
|
||||||
|
Loading…
Reference in New Issue
Block a user