All files / api/src/ai-providers/groq index.ts

100% Statements 29/29
100% Branches 0/0
100% Functions 0/0
100% Lines 29/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40  1x 1x 1x         1x 1x         1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x   1x 1x 1x 1x  
import type { AIProviderConfig } from '@shared/types/ai-providers/config';
import { FunctionName } from '@shared/types/api/request';
import { AIProvider } from '@shared/types/constants';
import {
  chatCompleteParams,
  createSpeechParams,
  responseTransformers,
} from '../open-ai-base';
import { groqAPIConfig } from './api';
import {
  groqChatCompleteResponseTransform,
  groqChatCompleteStreamChunkTransform,
} from './chat-complete';
 
export const groqConfig: AIProviderConfig = {
  api: groqAPIConfig,
  [FunctionName.CHAT_COMPLETE]: chatCompleteParams([
    'logprobs',
    'logits_bias',
    'top_logprobs',
  ]),
  [FunctionName.STREAM_CHAT_COMPLETE]: chatCompleteParams([
    'logprobs',
    'logits_bias',
    'top_logprobs',
  ]),
  [FunctionName.CREATE_TRANSCRIPTION]: {},
  [FunctionName.CREATE_TRANSLATION]: {},
  [FunctionName.CREATE_SPEECH]: createSpeechParams([]),
  responseTransforms: {
    ...responseTransformers(AIProvider.GROQ, {
      chatComplete: true,
      createSpeech: true,
    }),
    // Override with custom transforms that handle Groq-specific response format
    [FunctionName.CHAT_COMPLETE]: groqChatCompleteResponseTransform,
    [FunctionName.STREAM_CHAT_COMPLETE]: groqChatCompleteStreamChunkTransform,
  },
};