From 8a72120bfaf763d65695ef2a769c1498b067c820 Mon Sep 17 00:00:00 2001 From: martsforever Date: Fri, 27 Mar 2026 11:34:52 +0800 Subject: [PATCH] feat: init --- .gitignore | 2 ++ Dockerfile | 21 ++++++++++++ README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++ app/__init__.py | 0 app/server.py | 19 +++++++++++ packages/README.md | 0 pyproject.toml | 23 ++++++++++++++ 7 files changed, 144 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app/__init__.py create mode 100644 app/server.py create mode 100644 packages/README.md create mode 100644 pyproject.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..341e31e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +.idea \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a129cd0 --- /dev/null +++ b/Dockerfile @@ -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 ./packages ./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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..4977aa3 --- /dev/null +++ b/README.md @@ -0,0 +1,79 @@ +# ai-agent-server + +## 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 LANGSMITH_TRACING=true +export LANGSMITH_API_KEY= +export LANGSMITH_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 +``` diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/server.py b/app/server.py new file mode 100644 index 0000000..91db31b --- /dev/null +++ b/app/server.py @@ -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() -> RedirectResponse: + 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) diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..7883ea4 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,23 @@ +[tool.poetry] +name = "ai-agent-server" +version = "0.1.0" +description = "" +authors = ["Your Name "] +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"