mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 00:23:17 +00:00
* feat: Implement model registry and capabilities for multi-provider support - Added ModelRegistry to manage available models and their capabilities. - Introduced ModelProvider enum for different LLM providers. - Created ModelCapabilities dataclass to define model features. - Implemented methods to load models based on API keys and settings. - Added utility functions for model management in model_utils.py. - Updated settings.py to include provider-specific API keys. - Refactored LLM classes (Anthropic, OpenAI, Google, etc.) to utilize new model registry. - Enhanced utility functions to handle token limits and model validation. - Improved code structure and logging for better maintainability. * feat: Add model selection feature with API integration and UI component * feat: Add model selection and default model functionality in agent management * test: Update assertions and formatting in stream processing tests * refactor(llm): Standardize model identifier to model_id * fix tests --------- Co-authored-by: Alex <a@tushynski.me>
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from openai import OpenAI
|
|
|
|
from application.core.settings import settings
|
|
from application.llm.base import BaseLLM
|
|
|
|
|
|
class GroqLLM(BaseLLM):
|
|
def __init__(self, api_key=None, user_api_key=None, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
self.api_key = api_key or settings.GROQ_API_KEY or settings.API_KEY
|
|
self.user_api_key = user_api_key
|
|
self.client = OpenAI(
|
|
api_key=self.api_key, base_url="https://api.groq.com/openai/v1"
|
|
)
|
|
|
|
def _raw_gen(self, baseself, model, messages, stream=False, tools=None, **kwargs):
|
|
if tools:
|
|
response = self.client.chat.completions.create(
|
|
model=model, messages=messages, stream=stream, tools=tools, **kwargs
|
|
)
|
|
return response.choices[0]
|
|
else:
|
|
response = self.client.chat.completions.create(
|
|
model=model, messages=messages, stream=stream, **kwargs
|
|
)
|
|
return response.choices[0].message.content
|
|
|
|
def _raw_gen_stream(
|
|
self, baseself, model, messages, stream=True, tools=None, **kwargs
|
|
):
|
|
response = self.client.chat.completions.create(
|
|
model=model, messages=messages, stream=stream, **kwargs
|
|
)
|
|
for line in response:
|
|
if line.choices[0].delta.content is not None:
|
|
yield line.choices[0].delta.content
|