Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add docs for templates #12346

Merged
merged 1 commit into from
Oct 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libs/cli/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "langchain-cli"
version = "0.0.1rc2"
version = "0.0.3"
description = "CLI for interacting with LangChain"
authors = ["Erick Friis <erick@langchain.dev>"]
readme = "README.md"
Expand Down
18 changes: 18 additions & 0 deletions templates/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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.
4 changes: 4 additions & 0 deletions templates/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
A list of all template repos

⭐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.

⭐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.

⭐XML Agent: Build a chatbot that can take actions. Uses Anthropic and You.com.
89 changes: 46 additions & 43 deletions templates/README.md
Original file line number Diff line number Diff line change
@@ -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:
```bash
# install langservehub CLI
pip install --upgrade langservehub
To use, first install the LangChain CLI.

langservehub new my-app
cd my-app
```shell
pip install -U langchain-cli
```

poetry install
Then, install `langserve`:

# if you have problems with poe, use `poetry run poe ...` instead
```shell
pip install "langserve[all]"
```

# add the simple-pirate package
poe add --repo=pingpong-templates/hub simple-pirate
Next, create a new LangChain project:

# adding other GitHub repo packages, defaults to repo root
poe add --repo=hwchase17/chain-of-verification
```shell
langchain serve new my-app
```

# with a custom api mount point (defaults to `/{package_name}`)
poe add --repo=pingpong-templates/hub simple-translator --api_path=/my/custom/path/translator
This will create a new directory called `my-app` with two folders:

poe list
- `app`: This is where LangServe code will live
- `packages`: This is where your chains or agents will live

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

# remove packages by their api path:
poe remove my/custom/path/translator
```shell
cd my-app
```

## 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

```bash
# starting from this directory in langserve-hub
langservehub package new simple-newpackage
```shell
langchain serve add $PROJECT_NAME
```

Now you can edit the chain in `simple-newpackage/simple_newpackage/chain.py` and put up a PR!

Your package will be usable as `poe add --repo=pingpong-templates/hub simple-newpackage` when it's merged in.
This will pull in the specified template into `packages/$PROJECT_NAME`

## Data Format
You then need to install this package so you can use it in the langserve app:

What makes these packages work?
```shell
pip install -e packages/$PROJECT_NAME
```

- Poetry
- pyproject.toml files
We install it with `-e` so that if we modify the template at all (which we likely will) the changes are updated.

### Installable Packages
In order to have LangServe use this project, you then need to modify `app/server.py`.
Specifically, you should add something like:

Everything is a Poetry package currently. This allows poetry to manage our dependencies for us :).
```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

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)).
app = FastAPI()

This allows us to identify which module and attribute to import as the chain/runnable for the langserve `add_routes` call.
add_routes(app, chain)
```

### Apps (with installed langserve packages)
You can then spin up production-ready endpoints, along with a playground, by running:

Let's say you add the pirate package with `poe add --repo=pingpong-templates/hub simple-pirate`.
```shell
python app/server.py
```

First this downloads the simple-pirate package to pirate
## Adding a template

Then this adds a `poetry` path dependency, which gets picked up from `add_package_routes`.
See [here](CONTRIBUTING.md)
Loading