Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement local llms #1745

Merged
merged 5 commits into from
Nov 28, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: 🎸 ollama
running
  • Loading branch information
StanGirard committed Nov 28, 2023
commit 41171cf8e71832200524cd9751a7f4f494095387
3 changes: 3 additions & 0 deletions .backend_env.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ GOOGLE_CLOUD_PROJECT=<change-me>
CELERY_BROKER_URL=redis:https://redis:6379/0
CELEBRY_BROKER_QUEUE_NAME=quivr-preview.fifo

#LOCAL
#OLLAMA_API_BASE_URL=http:https://host.docker.internal:11434 # local all in one remove comment to use local llm with Ollama



#RESEND
Expand Down
10 changes: 8 additions & 2 deletions backend/llm/qa_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from langchain.chains import ConversationalRetrievalChain, LLMChain
from langchain.chains.question_answering import load_qa_chain
from langchain.chat_models import ChatLiteLLM
from langchain.embeddings.ollama import OllamaEmbeddings
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.llms.base import BaseLLM
from langchain.prompts.chat import (
Expand Down Expand Up @@ -84,8 +85,13 @@ def _determine_callback_array(
]

@property
def embeddings(self) -> OpenAIEmbeddings:
return OpenAIEmbeddings() # pyright: ignore reportPrivateUsage=none
def embeddings(self):
if self.brain_settings.ollama_api_base_url:
return OllamaEmbeddings(
base_url=self.brain_settings.ollama_api_base_url
) # pyright: ignore reportPrivateUsage=none
else:
return OpenAIEmbeddings()

supabase_client: Optional[Client] = None
vector_store: Optional[CustomSupabaseVectorStore] = None
Expand Down
17 changes: 12 additions & 5 deletions backend/models/settings.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
from langchain.embeddings.openai import OpenAIEmbeddings
from models.databases.supabase.supabase import SupabaseDB
from pydantic import BaseSettings
from supabase.client import Client, create_client
from vectorstore.supabase import SupabaseVectorStore
from langchain.embeddings.ollama import OllamaEmbeddings
from langchain.embeddings.openai import OpenAIEmbeddings

from logger import get_logger

logger = get_logger(__name__)

class BrainRateLimiting(BaseSettings):
max_brain_per_user: int = 5
Expand Down Expand Up @@ -40,11 +44,14 @@ def get_supabase_db() -> SupabaseDB:
return SupabaseDB(supabase_client)


def get_embeddings() -> OpenAIEmbeddings:
def get_embeddings():
settings = BrainSettings() # pyright: ignore reportPrivateUsage=none
embeddings = OpenAIEmbeddings(
openai_api_key=settings.openai_api_key
) # pyright: ignore reportPrivateUsage=none
if settings.ollama_api_base_url:
embeddings = OllamaEmbeddings(
base_url=settings.ollama_api_base_url,
) # pyright: ignore reportPrivateUsage=none
else:
embeddings = OpenAIEmbeddings() # pyright: ignore reportPrivateUsage=none
return embeddings


Expand Down
Loading