fix: various fixes to get groq to work from the CLI

This commit is contained in:
cpacker
2024-10-03 19:03:59 -07:00
parent ee46de19bd
commit ad5b070710
3 changed files with 35 additions and 1 deletions

View File

@@ -426,6 +426,12 @@ def get_model_options(
fetched_model_options = cohere_get_model_list(url=model_endpoint, api_key=credentials.cohere_key)
model_options = [obj for obj in fetched_model_options]
elif model_endpoint_type == "groq":
if credentials.groq_key is None:
raise ValueError("Missing Groq API key")
fetched_model_options_response = openai_get_model_list(url=model_endpoint, api_key=credentials.groq_key, fix_url=True)
model_options = [obj["id"] for obj in fetched_model_options_response["data"]]
else:
# Attempt to do OpenAI endpoint style model fetching
# TODO support local auth with api-key header
@@ -589,10 +595,32 @@ def configure_model(config: LettaConfig, credentials: LettaCredentials, model_en
if model is None:
raise KeyboardInterrupt
# Groq support via /chat/completions + function calling endpoints
elif model_endpoint_type == "groq":
try:
fetched_model_options = get_model_options(
credentials=credentials, model_endpoint_type=model_endpoint_type, model_endpoint=model_endpoint
)
except Exception as e:
# NOTE: if this fails, it means the user's key is probably bad
typer.secho(
f"Failed to get model list from {model_endpoint} - make sure your API key and endpoints are correct!", fg=typer.colors.RED
)
raise e
model = questionary.select(
"Select default model:",
choices=fetched_model_options,
default=fetched_model_options[0],
).ask()
if model is None:
raise KeyboardInterrupt
else: # local models
# ask about local auth
if model_endpoint_type in ["groq"]: # TODO all llm engines under 'local' that will require api keys
if model_endpoint_type in ["groq-chat-compltions"]: # TODO all llm engines under 'local' that will require api keys
use_local_auth = True
local_auth_type = "bearer_token"
local_auth_key = questionary.password(

View File

@@ -81,6 +81,8 @@ class LettaCredentials:
"anthropic_key": get_field(config, "anthropic", "key"),
# cohere
"cohere_key": get_field(config, "cohere", "key"),
# groq
"groq_key": get_field(config, "groq", "key"),
# open llm
"openllm_auth_type": get_field(config, "openllm", "auth_type"),
"openllm_key": get_field(config, "openllm", "key"),
@@ -123,6 +125,9 @@ class LettaCredentials:
# cohere
set_field(config, "cohere", "key", self.cohere_key)
# groq
set_field(config, "groq", "key", self.groq_key)
# openllm config
set_field(config, "openllm", "auth_type", self.openllm_auth_type)
set_field(config, "openllm", "key", self.openllm_key)

View File

@@ -492,6 +492,7 @@ def create(
stream_inferface.stream_start()
try:
# groq uses the openai chat completions API, so this component should be reusable
assert credentials.groq_key is not None, "Groq key is missing"
response = openai_chat_completions_request(
url=llm_config.model_endpoint,
api_key=credentials.groq_key,