feat(fastapi): use openai instead of langchain
This commit is contained in:
parent
ed2d77a1dc
commit
3fe88f7725
4 changed files with 60 additions and 38 deletions
|
|
@ -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"]
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
52
servers/fastapi/api/utils/model_utils.py
Normal file
52
servers/fastapi/api/utils/model_utils.py
Normal 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)
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue