Module: Legion::Extensions::Llm::AzureFoundry::ProviderDispatchMethods
- Included in:
- Provider
- Defined in:
- lib/legion/extensions/llm/azure_foundry/provider.rb
Overview
Public dispatch methods — chat, stream, embed, count_tokens.
Instance Method Summary collapse
- #chat(messages:, model:, **options) ⇒ Object
- #count_tokens(messages:, model:) ⇒ Object
- #embed(text:, model:, **options) ⇒ Object
- #stream(messages:, model:, **options) ⇒ Object
Instance Method Details
#chat(messages:, model:, **options) ⇒ Object
102 103 104 105 106 107 |
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 102 def chat(messages:, model:, **) log.info { "chat request model=#{model} messages=#{.size}" } complete(, tools: .fetch(:tools, {}), temperature: [:temperature], model: model_info(model, max_tokens: [:max_tokens]), params: .fetch(:params, {}), tool_prefs: [:tool_prefs]) end |
#count_tokens(messages:, model:) ⇒ Object
127 128 129 130 131 132 133 |
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 127 def count_tokens(messages:, model:, **) { provider_family: :azure_foundry, model: model_id(model), supported: false, reason: 'Azure AI Foundry REST docs do not define a portable token-counting endpoint.', estimated_input_characters: .sum { |m| m.content.to_s.length } } end |
#embed(text:, model:, **options) ⇒ Object
116 117 118 119 120 121 122 123 124 125 |
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 116 def (text:, model:, **) log.info { "embed request model=#{model}" } payload = Utils.deep_merge( (text, model: model_id(model), dimensions: [:dimensions]), .fetch(:params, {}) ) payload[:input_type] = [:input_type] if [:input_type] response = connection.post((model:), payload) (response, model: model_id(model), text:) end |
#stream(messages:, model:, **options) ⇒ Object
109 110 111 112 113 114 |
# File 'lib/legion/extensions/llm/azure_foundry/provider.rb', line 109 def stream(messages:, model:, **, &) log.info { "stream request model=#{model} messages=#{.size}" } complete(, tools: .fetch(:tools, {}), temperature: [:temperature], model: model_info(model, max_tokens: [:max_tokens]), params: .fetch(:params, {}), tool_prefs: [:tool_prefs], &) end |