From 38ab523fc8d1cd22916e626230bfbb66a205fc9a Mon Sep 17 00:00:00 2001 From: Aaron <29749331+aarnphm@users.noreply.github.com> Date: Thu, 22 Jun 2023 04:19:51 -0400 Subject: [PATCH] docs: update LangChain integration Finally it is merged onto LangChain upstream Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com> --- README.md | 48 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 6e8d6c28..8473775b 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ StarCoder and more. 🔥 **Flexible APIs**: serve LLMs over RESTful API or gRPC with one command, query via WebUI, CLI, our Python/Javascript client, or any HTTP client. -⛓️ **Freedom To Build**: First-class support for LangChain, BentoML and -Hugging Face that allows you to easily create your own AI apps by composing LLMs -with other models and services. +⛓️ **Freedom To Build**: First-class support for LangChain, BentoML and Hugging +Face that allows you to easily create your own AI apps by composing LLMs with +other models and services. 🎯 **Streamline Deployment**: Automatically generate your LLM server Docker Images or deploy as serverless endpoint via @@ -376,26 +376,50 @@ client.ask_agent( ) ``` -### LangChain (⏳Coming Soon!) +### LangChain -In future LangChain releases, you'll be able to effortlessly invoke OpenLLM -models, like so: +To quickly start a local LLM with `langchain`, simply do the following: ```python from langchain.llms import OpenLLM -llm = OpenLLM.for_model(model_name='flan-t5') -llm("What is the difference between a duck and a goose?") + +llm = OpenLLM(model_name="dolly-v2", model_id='databricks/dolly-v2-7b', device_map='auto') + +llm("What is the difference between a duck and a goose? And why there are so many Goose in Canada?") ``` -if you have an OpenLLM server deployed elsewhere, you can connect to it by -specifying its URL: +`langchain.llms.OpenLLM` has the capabilities to interact with remote OpenLLM +Server. Given there is an OpenLLM server deployed elsewhere, you can connect to +it by specifying its URL: ```python from langchain.llms import OpenLLM -llm = OpenLLM.for_model(server_url='http://localhost:8000', server_type='http') -llm("What is the difference between a duck and a goose?") + +llm = OpenLLM(server_url='http://44.23.123.1:3000', server_type='grpc') +llm("What is the difference between a duck and a goose? And why there are so many Goose in Canada?") ``` +To integrate a LangChain agent with BentoML, you can do the following: + +```python +llm = OpenLLM( + model_name='flan-t5', + model_id='google/flan-t5-large', + embedded=False, +) +tools = load_tools(["serpapi", "llm-math"], llm=llm) +agent = initialize_agent( + tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION +) +svc = bentoml.Service("langchain-openllm", runners=[llm.runner]) +@svc.api(input=Text(), output=Text()) +def chat(input_text: str): + return agent.run(input_text) +``` + +> **Note** You can find out more examples under the +> [examples](https://github.com/bentoml/OpenLLM/tree/main/examples) folder. + ## 🚀 Deploying to Production To deploy your LLMs into production: