mirror of
https://github.com/lfnovo/open-notebook.git
synced 2026-05-01 21:00:43 +00:00
add support for GROQ models
This commit is contained in:
parent
9ba5709a3c
commit
321234e485
6 changed files with 95 additions and 10 deletions
|
|
@ -10,6 +10,7 @@ from open_notebook.models.embedding_models import (
|
|||
from open_notebook.models.llms import (
|
||||
AnthropicLanguageModel,
|
||||
GeminiLanguageModel,
|
||||
GroqLanguageModel,
|
||||
LanguageModel,
|
||||
LiteLLMLanguageModel,
|
||||
OllamaLanguageModel,
|
||||
|
|
@ -20,6 +21,7 @@ from open_notebook.models.llms import (
|
|||
XAILanguageModel,
|
||||
)
|
||||
from open_notebook.models.speech_to_text_models import (
|
||||
GroqSpeechToTextModel,
|
||||
OpenAISpeechToTextModel,
|
||||
SpeechToTextModel,
|
||||
)
|
||||
|
|
@ -46,6 +48,7 @@ MODEL_CLASS_MAP: Dict[str, ProviderMap] = {
|
|||
"openai": OpenAILanguageModel,
|
||||
"gemini": GeminiLanguageModel,
|
||||
"xai": XAILanguageModel,
|
||||
"groq": GroqLanguageModel,
|
||||
},
|
||||
"embedding": {
|
||||
"openai": OpenAIEmbeddingModel,
|
||||
|
|
@ -55,6 +58,7 @@ MODEL_CLASS_MAP: Dict[str, ProviderMap] = {
|
|||
},
|
||||
"speech_to_text": {
|
||||
"openai": OpenAISpeechToTextModel,
|
||||
"groq": GroqSpeechToTextModel,
|
||||
},
|
||||
"text_to_speech": {
|
||||
"openai": OpenAITextToSpeechModel,
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ from langchain_core.language_models.chat_models import BaseChatModel
|
|||
from langchain_google_genai import ChatGoogleGenerativeAI
|
||||
from langchain_google_vertexai import ChatVertexAI
|
||||
from langchain_google_vertexai.model_garden import ChatAnthropicVertex
|
||||
from langchain_groq.chat_models import ChatGroq
|
||||
from langchain_ollama.chat_models import ChatOllama
|
||||
from langchain_openai.chat_models import ChatOpenAI
|
||||
from pydantic import SecretStr
|
||||
|
|
@ -191,6 +192,30 @@ class OpenRouterLanguageModel(LanguageModel):
|
|||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class GroqLanguageModel(LanguageModel):
|
||||
"""
|
||||
Language model that uses the Groq chat model.
|
||||
"""
|
||||
|
||||
model_name: str
|
||||
|
||||
def to_langchain(self) -> ChatGroq:
|
||||
"""
|
||||
Convert the language model to a LangChain chat model for Groq.
|
||||
"""
|
||||
kwargs = self.kwargs
|
||||
kwargs["top_p"] = self.top_p
|
||||
|
||||
return ChatGroq(
|
||||
model=self.model_name,
|
||||
temperature=self.temperature or 0.5,
|
||||
max_tokens=self.max_tokens,
|
||||
model_kwargs=kwargs,
|
||||
stop_sequences=None,
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class XAILanguageModel(LanguageModel):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -40,3 +40,22 @@ class OpenAISpeechToTextModel(SpeechToTextModel):
|
|||
model=self.model_name, file=audio
|
||||
)
|
||||
return transcription.text
|
||||
|
||||
|
||||
@dataclass
|
||||
class GroqSpeechToTextModel(SpeechToTextModel):
|
||||
model_name: str
|
||||
|
||||
def transcribe(self, audio_file_path: str) -> str:
|
||||
"""
|
||||
Transcribes an audio file into text
|
||||
"""
|
||||
from groq import Groq
|
||||
|
||||
# todo: make this Singleton
|
||||
client = Groq()
|
||||
with open(audio_file_path, "rb") as audio:
|
||||
transcription = client.audio.transcriptions.create(
|
||||
model=self.model_name, file=audio
|
||||
)
|
||||
return transcription.text
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue