feat(fastapi): use openai instead of langchain

This commit is contained in:
sauravniraula 2025-06-24 14:52:16 +05:45
parent ed2d77a1dc
commit 3fe88f7725
No known key found for this signature in database
GPG key ID: 60FCC1B5A5E83326
4 changed files with 60 additions and 38 deletions

View file

@ -37,7 +37,7 @@ RUN npx puppeteer browsers install chrome --install-deps
COPY nginx.conf /etc/nginx/nginx.conf
# Expose the port
EXPOSE 80 3000 8000 6379
EXPOSE 80 3000 8000
# Start the servers
CMD ["/bin/bash", "-c", "ollama serve & service nginx start & service redis-server start && node /app/start.js"]

View file

@ -1,3 +1,4 @@
from enum import Enum
import json
from typing import Optional
from pydantic import BaseModel
@ -73,3 +74,9 @@ class OllamaModelMetadata(BaseModel):
icon: str
size: str
supports_graph: bool
class SelectedLLMProvider(Enum):
OLLAMA = "ollama"
OPENAI = "openai"
GOOGLE = "google"

View file

@ -0,0 +1,52 @@
import os
from api.models import SelectedLLMProvider
def is_ollama_selected() -> bool:
return get_selected_llm_provider() == SelectedLLMProvider.OLLAMA
def get_selected_llm_provider() -> SelectedLLMProvider:
return SelectedLLMProvider(os.getenv("LLM"))
def get_model_base_url():
selected_llm = get_selected_llm_provider()
if selected_llm == SelectedLLMProvider.OLLAMA:
return "http://localhost:11434"
elif selected_llm == SelectedLLMProvider.OPENAI:
return "https://api.openai.com/v1"
else:
return "https://generativelanguage.googleapis.com/v1beta/openai"
def get_large_model():
selected_llm = get_selected_llm_provider()
if selected_llm == SelectedLLMProvider.OPENAI:
return ChatOpenAI(model="gpt-4.1")
elif selected_llm == SelectedLLMProvider.GOOGLE:
return ChatGoogleGenerativeAI(model="gemini-2.0-flash")
else:
return ChatOllama(model=os.getenv("OLLAMA_MODEL"), temperature=0.8)
def get_small_model():
selected_llm = os.getenv("LLM")
if selected_llm == "openai":
return ChatOpenAI(model="gpt-4.1-mini")
elif selected_llm == "google":
return ChatGoogleGenerativeAI(model="gemini-2.0-flash")
else:
return ChatOllama(model=os.getenv("OLLAMA_MODEL"), temperature=0.8)
def get_nano_model():
selected_llm = os.getenv("LLM")
if selected_llm == "openai":
return ChatOpenAI(model="gpt-4.1-nano")
elif selected_llm == "google":
return ChatGoogleGenerativeAI(model="gemini-2.0-flash")
else:
return ChatOllama(model=os.getenv("OLLAMA_MODEL"), temperature=0.8)

View file

@ -9,48 +9,11 @@ from typing import List, Optional
import aiohttp
from fastapi import HTTPException, UploadFile
from fastapi.responses import StreamingResponse
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_ollama import ChatOllama
from langchain_openai import ChatOpenAI
from api.models import LogMetadata, UserConfig
from api.services.logging import LoggingService
def is_ollama_selected() -> bool:
return os.getenv("LLM") == "ollama"
def get_large_model():
selected_llm = os.getenv("LLM")
if selected_llm == "openai":
return ChatOpenAI(model="gpt-4.1")
elif selected_llm == "google":
return ChatGoogleGenerativeAI(model="gemini-2.0-flash")
else:
return ChatOllama(model=os.getenv("OLLAMA_MODEL"), temperature=0.8)
def get_small_model():
selected_llm = os.getenv("LLM")
if selected_llm == "openai":
return ChatOpenAI(model="gpt-4.1-mini")
elif selected_llm == "google":
return ChatGoogleGenerativeAI(model="gemini-2.0-flash")
else:
return ChatOllama(model=os.getenv("OLLAMA_MODEL"), temperature=0.8)
def get_nano_model():
selected_llm = os.getenv("LLM")
if selected_llm == "openai":
return ChatOpenAI(model="gpt-4.1-nano")
elif selected_llm == "google":
return ChatGoogleGenerativeAI(model="gemini-2.0-flash")
else:
return ChatOllama(model=os.getenv("OLLAMA_MODEL"), temperature=0.8)
def get_presentation_dir(presentation_id: str) -> str:
presentation_dir = os.path.join(os.getenv("APP_DATA_DIRECTORY"), presentation_id)
os.makedirs(presentation_dir, exist_ok=True)