feat: add sambanova component (#4908)

* feat: add sambanova component

* update param name

* add multimodal models

* feat: add sambanova icon

* feat: add sambanova

* feat: format

* feat: add sambanova import

* feat: add sambanova

* feat: add sambanova docs
This commit is contained in:
Luis Felipe Salazar Ucros 2024-11-28 07:05:32 -05:00 • committed by GitHub
commit cfc5365b73
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 157 additions and 0 deletions

View file

@ -0,0 +1,11 @@
SAMBANOVA_MODEL_NAMES = [
"Meta-Llama-3.1-8B-Instruct",
"Meta-Llama-3.1-70B-Instruct",
"Meta-Llama-3.1-405B-Instruct",
"Meta-Llama-3.2-1B-Instruct",
"Meta-Llama-3.2-3B-Instruct",
"Llama-3.2-11B-Vision-Instruct",
"Llama-3.2-90B-Vision-Instruct",
]
MODEL_NAMES = SAMBANOVA_MODEL_NAMES

View file

@ -14,6 +14,7 @@ from .nvidia import NVIDIAModelComponent
from .ollama import ChatOllamaComponent
from .openai import OpenAIModelComponent
from .perplexity import PerplexityComponent
from .sambanova import SambaNovaComponent
from .vertexai import ChatVertexAIComponent
__all__ = [
@ -33,5 +34,6 @@ __all__ = [
"NVIDIAModelComponent",
"OpenAIModelComponent",
"PerplexityComponent",
"SambaNovaComponent",
"QianfanChatEndpointComponent",
]

View file

@ -0,0 +1,74 @@
from langchain_community.chat_models.sambanova import ChatSambaNovaCloud
from pydantic.v1 import SecretStr
from langflow.base.models.model import LCModelComponent
from langflow.base.models.sambanova_constants import SAMBANOVA_MODEL_NAMES
from langflow.field_typing import LanguageModel
from langflow.inputs.inputs import HandleInput
from langflow.io import DropdownInput, FloatInput, IntInput, SecretStrInput, StrInput
class SambaNovaComponent(LCModelComponent):
display_name = "SambaNova"
description = "Generate text using Sambanova LLMs."
documentation = "https://cloud.sambanova.ai/"
icon = "SambaNova"
name = "SambaNovaModel"
inputs = [
*LCModelComponent._base_inputs,
StrInput(
name="sambanova_url",
display_name="SambaNova Cloud Base Url",
advanced=True,
info="The base URL of the Sambanova Cloud API. "
"Defaults to https://api.sambanova.ai/v1/chat/completions. "
"You can change this to use other urls like Sambastudio",
),
DropdownInput(
name="model_name",
display_name="Model Name",
advanced=False,
options=SAMBANOVA_MODEL_NAMES,
value=SAMBANOVA_MODEL_NAMES[0],
),
SecretStrInput(
name="sambanova_api_key",
display_name="Sambanova API Key",
info="The Sambanova API Key to use for the Sambanova model.",
advanced=False,
value="SAMBANOVA_API_KEY",
),
IntInput(
name="max_tokens",
display_name="Max Tokens",
advanced=True,
value=4096,
info="The maximum number of tokens to generate. Set to 0 for unlimited tokens.",
),
FloatInput(name="temperature", display_name="Temperature", value=0.07),
HandleInput(
name="output_parser",
display_name="Output Parser",
info="The parser to use to parse the output of the model",
advanced=True,
input_types=["OutputParser"],
),
]
def build_model(self) -> LanguageModel: # type: ignore[type-var]
sambanova_url = self.sambanova_url
sambanova_api_key = self.sambanova_api_key
model_name = self.model_name
max_tokens = self.max_tokens
temperature = self.temperature
api_key = SecretStr(sambanova_api_key).get_secret_value() if sambanova_api_key else None
return ChatSambaNovaCloud(
model=model_name,
max_tokens=max_tokens or 1024,
temperature=temperature or 0.07,
sambanova_url=sambanova_url,
sambanova_api_key=api_key,
)

View file

@ -15,6 +15,7 @@ VARIABLES_TO_GET_FROM_ENVIRONMENT = [
"GROQ_API_KEY",
"HUGGINGFACEHUB_API_TOKEN",
"PINECONE_API_KEY",
"SAMBANOVA_API_KEY",
"SEARCHAPI_API_KEY",
"SERPAPI_API_KEY",
"UPSTASH_VECTOR_REST_URL",