Deployment Options
| Method | Difficulty | Cost | Best For |
|---|---|---|---|
| Streamlit Cloud | Easy | Free | Demos, prototypes |
| Railway | Easy | $5/mo | Small apps |
| Render | Easy | Free tier | APIs |
| AWS/GCP | Hard | Varies | Production |
| Docker | Medium | Varies | Anywhere |
Option 1: Streamlit Cloud (Easiest)
Step 1: Create Your App
python
# app.py
import streamlit as st
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
@tool
def search(query: str) -> str:
"""Search the web"""
from duckduckgo_search import DDGS
with DDGS() as ddgs:
results = list(ddgs.text(query, max_results=3))
return "\n".join([r["body"] for r in results])
st.title("AI Agent")
if "agent" not in st.session_state:
llm = ChatOpenAI(model="gpt-4o")
st.session_state.agent = create_react_agent(model=llm, tools=[search])
if prompt := st.chat_input("Ask me anything"):
result = st.session_state.agent.invoke({
"messages": [{"role": "user", "content": prompt}]
})
st.write(result["messages"][-1].content)
Step 2: Create requirements.txt
Architecture Diagram
streamlit
langchain
langchain-openai
duckduckgo-search
Step 3: Deploy
- Push to GitHub
- Go to share.streamlit.io
- Connect your GitHub repo
- Click "Deploy"
Done! Your agent is live.
Option 2: Railway (Simple API)
Step 1: Create FastAPI App
python
# main.py
from fastapi import FastAPI
from pydantic import BaseModel
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
app = FastAPI()
@tool
def search(query: str) -> str:
"""Search the web"""
return f"Results for: {query}"
llm = ChatOpenAI(model="gpt-4o")
agent = create_react_agent(model=llm, tools=[search])
class Query(BaseModel):
message: str
@app.post("/chat")
def chat(query: Query):
result = agent.invoke({
"messages": [{"role": "user", "content": query.message}]
})
return {"response": result["messages"][-1].content}
Step 2: Create railway.json
{
"build": {
"builder": "nixpacks"
},
"deploy": {
"startCommand": "uvicorn main:app --host 0.0.0.0 --port $PORT"
}
}
Step 3: Deploy
railway init
railway up
Option 3: Docker (Anywhere)
Create Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Build and Run
docker build -t my-agent .
docker run -p 8000:8000 my-agent
Environment Variables
Never hardcode API keys:
python
import os
from langchain_openai import ChatOpenAI
# Get key from environment
api_key = os.environ.get("OPENAI_API_KEY")
llm = ChatOpenAI(model="gpt-4o", api_key=api_key)
Set in your deployment platform's settings.
Related Topics
| Topic | Link |
|---|---|
| Production Apps | Best Practices |
| LLM Serving | Serving Architectures |
| Monitoring | Observability |
| Security | Best Practices |
What to Learn Next
Build something real.
Level up your skills.
Build for real users.