|
|
| from .models import LLMProviderConfig |
|
|
| |
| def chat_completion(messages): |
| config = LLMProviderConfig.objects.filter(is_active=True, is_embedding=False).first() |
| if not config: |
| raise Exception("No active LLM provider configured.") |
| |
| if config.provider_type == 'ollama': |
| import litellm |
| endpoint = config.api_key if config.api_key else "http://127.0.0.1:11434" |
| return litellm.completion( |
| model=f"ollama/{config.model}", |
| messages=messages, |
| api_base=endpoint |
| ) |
| elif config.provider_type == 'talentai': |
| |
| |
| ep = config.endpoint.strip().rstrip("/") if config.endpoint else "" |
| import litellm |
| return litellm.completion( |
| model=f"openai/{config.model}", |
| messages=messages, |
| api_base=ep, |
| api_key=config.api_key if config.api_key else "no-key-needed", |
| custom_llm_provider="openai" |
| ) |
| elif config.provider_type == 'openai': |
| import litellm |
| return litellm.completion( |
| model=config.model, |
| messages=messages, |
| api_key=config.api_key |
| ) |
| elif config.provider_type == 'anthropic': |
| import litellm |
| return litellm.completion( |
| model=config.model, |
| messages=messages, |
| api_key=config.api_key |
| ) |
| elif config.provider_type == 'nvidia': |
| import openai |
| client = openai.OpenAI( |
| base_url="https://integrate.api.nvidia.com/v1", |
| api_key=config.api_key |
| ) |
| return client.chat.completions.create( |
| model=config.model, |
| messages=messages, |
| temperature=1, |
| top_p=0.95, |
| max_tokens=4000 |
| ) |
| else: |
| |
| import litellm |
| return litellm.completion( |
| model=config.model, |
| messages=messages, |
| api_key=config.api_key, |
| api_base=config.endpoint if config.endpoint else None |
| ) |
|
|