ollama-api / app.py
YussefGAFeer's picture
Create app.py
95ddbec verified
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import requests
import json
from typing import List, Optional
from langchain.tools import BaseTool
from langchain.agents import initialize_agent
from langchain.llms import Ollama
from langchain.memory import ConversationBufferMemory
from langchain.agents import AgentType
class Tool(BaseModel):
name: str
description: str
function: str
class GenerationRequest(BaseModel):
prompt: str
max_tokens: int = 100
temperature: float = 0.7
tools: Optional[List[Tool]] = None
app = FastAPI()
OLLAMA_URL = "http://localhost:11434/api/generate"
@app.post("/generate")
async def generate_code(request: GenerationRequest):
try:
# Initialize Ollama LLM
llm = Ollama(
base_url="http://localhost:11434",
model="codellama",
temperature=request.temperature,
max_tokens=request.max_tokens
)
# Initialize memory
memory = ConversationBufferMemory(memory_key="chat_history")
# Initialize tools if provided
tools = []
if request.tools:
for tool in request.tools:
tools.append(
BaseTool(
name=tool.name,
description=tool.description,
func=lambda x: eval(tool.function)(x)
)
)
# Initialize agent
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
memory=memory
)
# Generate response
response = agent.run(request.prompt)
return {"generated_code": response}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)