import { AzureOpenAI } from 'openai'
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions'

const client = new AzureOpenAI({
  apiKey: process.env.AZURE_OPENAI_KEY!,
  apiVersion: '2024-02-01',
  endpoint: process.env.AZURE_OPENAI_ENDPOINT!,
})

export async function generateChatResponse(
  messages: Array<{ role: 'user' | 'assistant'; content: string }>,
  verseContext?: string
) {
  try {
    const systemPrompt = `Ești un asistent pentru studiul Bibliei care răspunde în română. Întotdeauna oferă referințe din Scriptură pentru răspunsurile tale. Fii respectuos și oferă răspunsuri biblice fundamentate. ${verseContext ? `Context: ${verseContext}` : ''}`

    const response = await client.chat.completions.create({
      model: process.env.AZURE_OPENAI_DEPLOYMENT || 'gpt-4',
      messages: [
        { role: 'system', content: systemPrompt },
        ...messages as unknown as ChatCompletionMessageParam[]
      ],
      temperature: 0.7,
      max_tokens: 1000
    })

    return response.choices[0].message.content
  } catch (error) {
    console.error('Azure OpenAI error:', error)
    throw new Error('Eroare la generarea răspunsului AI')
  }
}

export async function generateEmbedding(text: string): Promise<number[]> {
  try {
    if (!process.env.OLLAMA_API_URL) {
      throw new Error('OLLAMA_API_URL not configured')
    }

    const response = await fetch(`${process.env.OLLAMA_API_URL}/api/embeddings`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        model: 'nomic-embed-text',
        prompt: text
      })
    })

    if (!response.ok) {
      throw new Error('Failed to generate embedding')
    }

    const data = await response.json()
    return data.embedding
  } catch (error) {
    console.error('Embedding generation error:', error)
    // Return empty array if embedding service is not available
    return []
  }
}
