ollama-api-test / app.py
YussefGAFeer's picture
Create app.py
939ca52 verified
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import httpx
import os
app = FastAPI(title="Ollama with MCP Tools")
# CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Ollama API configuration
OLLAMA_API_URL = "http://localhost:11434/api"
# MCP Tools integration
class MCPTools:
@staticmethod
async def process_with_mcp(prompt: str):
# Example MCP tool integration
# Replace with actual MCP tool implementation
return {"status": "processed_with_mcp", "result": f"Processed: {prompt}"}
# Ollama API client
class OllamaClient:
@staticmethod
async def generate(prompt: str, model: str = "gemma3n:2b"):
async with httpx.AsyncClient() as client:
try:
response = await client.post(
f"{OLLAMA_API_URL}/generate",
json={
"model": model,
"prompt": prompt,
"stream": False
},
timeout=60.0
)
return response.json()
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
# API Endpoints
@app.get("/")
async def read_root():
return {"status": "Ollama API with MCP Tools is running"}
@app.post("/api/generate")
async def generate_text(prompt: str, use_mcp: bool = False):
if use_mcp:
mcp_result = await MCPTools.process_with_mcp(prompt)
return mcp_result
ollama_response = await OllamaClient().generate(prompt)
return {"response": ollama_response}
# Health check endpoint
@app.get("/health")
async def health_check():
try:
async with httpx.AsyncClient() as client:
response = await client.get(f"{OLLAMA_API_URL}/tags")
return {"status": "healthy", "ollama_status": "running" if response.status_code == 200 else "error"}
except Exception as e:
return {"status": "error", "message": str(e)}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)