Deploy: LangServer
This commit is contained in:
		
							
								
								
									
										21
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | FROM python:3.11-slim | ||||||
|  |  | ||||||
|  | RUN pip install poetry==1.6.1 | ||||||
|  |  | ||||||
|  | RUN poetry config virtualenvs.create false | ||||||
|  |  | ||||||
|  | WORKDIR /code | ||||||
|  |  | ||||||
|  | COPY ./pyproject.toml ./README.md ./poetry.lock* ./ | ||||||
|  |  | ||||||
|  | COPY ./package[s] ./packages | ||||||
|  |  | ||||||
|  | RUN poetry install  --no-interaction --no-ansi --no-root | ||||||
|  |  | ||||||
|  | COPY ./app ./app | ||||||
|  |  | ||||||
|  | RUN poetry install --no-interaction --no-ansi | ||||||
|  |  | ||||||
|  | EXPOSE 8080 | ||||||
|  |  | ||||||
|  | CMD exec uvicorn app.server:app --host 0.0.0.0 --port 8080 | ||||||
							
								
								
									
										79
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,2 +1,79 @@ | |||||||
| # oc-assistant | # assistant | ||||||
|  |  | ||||||
|  | ## Installation | ||||||
|  |  | ||||||
|  | Install the LangChain CLI if you haven't yet | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | pip install -U langchain-cli | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Adding packages | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | # adding packages from  | ||||||
|  | # https://github.com/langchain-ai/langchain/tree/master/templates | ||||||
|  | langchain app add $PROJECT_NAME | ||||||
|  |  | ||||||
|  | # adding custom GitHub repo packages | ||||||
|  | langchain app add --repo $OWNER/$REPO | ||||||
|  | # or with whole git string (supports other git providers): | ||||||
|  | # langchain app add git+https://github.com/hwchase17/chain-of-verification | ||||||
|  |  | ||||||
|  | # with a custom api mount point (defaults to `/{package_name}`) | ||||||
|  | langchain app add $PROJECT_NAME --api_path=/my/custom/path/rag | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Note: you remove packages by their api path | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | langchain app remove my/custom/path/rag | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Setup LangSmith (Optional) | ||||||
|  | LangSmith will help us trace, monitor and debug LangChain applications.  | ||||||
|  | You can sign up for LangSmith [here](https://smith.langchain.com/).  | ||||||
|  | If you don't have access, you can skip this section | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ```shell | ||||||
|  | export LANGCHAIN_TRACING_V2=true | ||||||
|  | export LANGCHAIN_API_KEY=<your-api-key> | ||||||
|  | export LANGCHAIN_PROJECT=<your-project>  # if not specified, defaults to "default" | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Launch LangServe | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | langchain serve | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Running in Docker | ||||||
|  |  | ||||||
|  | This project folder includes a Dockerfile that allows you to easily build and host your LangServe app. | ||||||
|  |  | ||||||
|  | ### Building the Image | ||||||
|  |  | ||||||
|  | To build the image, you simply: | ||||||
|  |  | ||||||
|  | ```shell | ||||||
|  | docker build . -t my-langserve-app | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | If you tag your image with something other than `my-langserve-app`, | ||||||
|  | note it for use in the next step. | ||||||
|  |  | ||||||
|  | ### Running the Image Locally | ||||||
|  |  | ||||||
|  | To run the image, you'll need to include any environment variables | ||||||
|  | necessary for your application. | ||||||
|  |  | ||||||
|  | In the below example, we inject the `OPENAI_API_KEY` environment | ||||||
|  | variable with the value set in my local environment | ||||||
|  | (`$OPENAI_API_KEY`) | ||||||
|  |  | ||||||
|  | We also expose port 8080 with the `-p 8080:8080` option. | ||||||
|  |  | ||||||
|  | ```shell | ||||||
|  | docker run -e OPENAI_API_KEY=$OPENAI_API_KEY -p 8080:8080 my-langserve-app | ||||||
|  | ``` | ||||||
|   | |||||||
							
								
								
									
										0
									
								
								app/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								app/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										19
									
								
								app/server.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								app/server.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | from fastapi import FastAPI | ||||||
|  | from fastapi.responses import RedirectResponse | ||||||
|  | from langserve import add_routes | ||||||
|  |  | ||||||
|  | app = FastAPI() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @app.get("/") | ||||||
|  | async def redirect_root_to_docs(): | ||||||
|  |     return RedirectResponse("/docs") | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Edit this to add the chain you want to add | ||||||
|  | add_routes(app, NotImplemented) | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     import uvicorn | ||||||
|  |  | ||||||
|  |     uvicorn.run(app, host="0.0.0.0", port=8000) | ||||||
							
								
								
									
										19
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | version: '3.8' | ||||||
|  |  | ||||||
|  | services: | ||||||
|  |   app: | ||||||
|  |     build: | ||||||
|  |       context: . | ||||||
|  |       dockerfile: Dockerfile | ||||||
|  |       args: | ||||||
|  |         OPENAI_API_KEY: ${OPENAI_API_KEY} | ||||||
|  |     ports: | ||||||
|  |       - "8080:8080" | ||||||
|  |     volumes: | ||||||
|  |       - .:/code | ||||||
|  |     environment: | ||||||
|  |       - PYTHONUNBUFFERED=1 | ||||||
|  |     command: > | ||||||
|  |       uvicorn app.server:app --host 0.0.0.0 --port 8080 | ||||||
|  |     env_file: | ||||||
|  |      - .env | ||||||
							
								
								
									
										0
									
								
								packages/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packages/README.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										23
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | [tool.poetry] | ||||||
|  | name = "assistant" | ||||||
|  | version = "0.1.0" | ||||||
|  | description = "" | ||||||
|  | authors = ["Your Name <you@example.com>"] | ||||||
|  | readme = "README.md" | ||||||
|  | packages = [ | ||||||
|  |     { include = "app" }, | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | [tool.poetry.dependencies] | ||||||
|  | python = "^3.11" | ||||||
|  | uvicorn = "^0.23.2" | ||||||
|  | langserve = {extras = ["server"], version = ">=0.0.30"} | ||||||
|  | pydantic = "<2" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [tool.poetry.group.dev.dependencies] | ||||||
|  | langchain-cli = ">=0.0.15" | ||||||
|  |  | ||||||
|  | [build-system] | ||||||
|  | requires = ["poetry-core"] | ||||||
|  | build-backend = "poetry.core.masonry.api" | ||||||
| @@ -1 +1 @@ | |||||||
| {"token": "ya29.a0AeDClZBjncDp4ZwNKNtQ5ghKHPr1IT4XkgDc9QtvhPLrFGAR84f5r5iZPCd91VB7_WoJCG3iGQS0MU1n01xdRlEjDl7wVlKjKF0H680Bdim_bzykCXn3Jj0nVVkkHDOZP7RWeP1oAfY7Vjd4qbw_VxOdOzVzG_Bc6Auy4EJINAaCgYKAcYSARASFQHGX2MipaJllxIRMLCcZb2csCZECA0177", "refresh_token": "1//05nbircha66xlCgYIARAAGAUSNwF-L9IrxbE2v7kfLwXb4u0pD6Rin7xEBOTT83DeH7t2ttfD5CDmUCyhDsOaVRMRK_r8UtdoMq8", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "19011937557-bi5nh4afvg4tuqr87v6dp55qj9a9o1h2.apps.googleusercontent.com", "client_secret": "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", "scopes": ["https://mail.google.com/"], "universe_domain": "googleapis.com", "account": "", "expiry": "2024-10-30T01:16:56.882894Z"} | {"token": "ya29.a0AeDClZABfltq9OLAHLaKOn2vHXVhOJSMTTe9HijkoZTexSswOMjnIlJj4-NV4TOwCq-wRKJadY7wppE2hAodyY3P0mHCzfpxbNZo0PGWMf2t6gmEDup4quGcIMHup1xjKETg0JkftCDepAh7UTi2tEg_YMeReI3TaZTvaMlScwaCgYKAewSARASFQHGX2MijepHh68yMlxXo_TGuquUPw0177", "refresh_token": "1//05nbircha66xlCgYIARAAGAUSNwF-L9IrxbE2v7kfLwXb4u0pD6Rin7xEBOTT83DeH7t2ttfD5CDmUCyhDsOaVRMRK_r8UtdoMq8", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "19011937557-bi5nh4afvg4tuqr87v6dp55qj9a9o1h2.apps.googleusercontent.com", "client_secret": "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", "scopes": ["https://mail.google.com/"], "universe_domain": "googleapis.com", "account": "", "expiry": "2024-10-30T20:18:03.194400Z"} | ||||||
		Reference in New Issue
	
	Block a user