Module: Legion::Extensions::AzureAi::Runners::Chat

Extended by:
Helpers::Client
Includes:
Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/azure_ai/runners/chat.rb

Instance Method Summary collapse

Methods included from Helpers::Client

client, content_safety_client

Instance Method Details

#create(deployment:, messages:, api_key:, endpoint:, api_version: '2024-10-21', max_tokens: nil, temperature: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/legion/extensions/azure_ai/runners/chat.rb', line 12

def create(deployment:, messages:, api_key:, endpoint:, api_version: '2024-10-21',
           max_tokens: nil, temperature: nil, **)
  body = { messages: messages }
  body[:max_tokens] = max_tokens if max_tokens
  body[:temperature] = temperature if temperature

  path = "/openai/deployments/#{deployment}/chat/completions?api-version=#{api_version}"
  response = client(api_key: api_key, endpoint: endpoint, api_version: api_version).post(path, body)
  {
    result: response.body,
    usage:  {
      input_tokens:       response.body.dig('usage', 'prompt_tokens') || 0,
      output_tokens:      response.body.dig('usage', 'completion_tokens') || 0,
      cache_read_tokens:  response.body.dig('usage', 'prompt_tokens_details', 'cached_tokens') || 0,
      cache_write_tokens: 0
    }
  }
end