diff --git a/libs/cli/pyproject.toml b/libs/cli/pyproject.toml index d90c65906f..31991b73c7 100644 --- a/libs/cli/pyproject.toml +++ b/libs/cli/pyproject.toml @@ -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 "] readme = "README.md" diff --git a/templates/CONTRIBUTING.md b/templates/CONTRIBUTING.md new file mode 100644 index 0000000000..f7171265f3 --- /dev/null +++ b/templates/CONTRIBUTING.md @@ -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. diff --git a/templates/INDEX.md b/templates/INDEX.md index ae70ec85f9..2b79bc835a 100644 --- a/templates/INDEX.md +++ b/templates/INDEX.md @@ -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. diff --git a/templates/README.md b/templates/README.md index 9404a53812..f5974ae148 100644 --- a/templates/README.md +++ b/templates/README.md @@ -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`. \ No newline at end of file +See [here](CONTRIBUTING.md)