Class: I18nContextGenerator::LLM::OpenAI
- Defined in:
- lib/i18n_context_generator/llm/openai.rb
Overview
OpenAI Responses API implementation of the LLM client.
Direct Known Subclasses
Constant Summary collapse
- API_URL =
'https://api.openai.com/v1/responses'- DEFAULT_MODEL =
'gpt-5-mini'
Constants inherited from Client
Client::CONFIDENCE_LEVELS, Client::DEFAULT_MAX_PROMPT_CHARS, Client::MAX_AMBIGUITY_REASON_LENGTH, Client::MAX_DESCRIPTION_LENGTH, Client::MAX_OUTPUT_TOKENS, Client::MAX_TRANSLATION_LENGTH, Client::MIN_MAX_PROMPT_CHARS, Client::RESPONSE_FIELDS, Client::RESPONSE_SCHEMA, Client::SYSTEM_PROMPT, Client::TONES, Client::UI_ELEMENTS
Constants included from RequestPolicy
RequestPolicy::MAX_RETRIES, RequestPolicy::MAX_RETRY_DELAY, RequestPolicy::RETRYABLE_STATUS_CODES, RequestPolicy::TRANSIENT_NETWORK_ERRORS
Instance Method Summary collapse
- #generate_context(key:, text:, matches:, model: nil, comment: nil, include_file_paths: false, redact_prompts: true, max_prompt_chars: nil, supplemental_context: []) ⇒ Object
-
#initialize(api_url: API_URL, api_key: ENV.fetch('OPENAI_API_KEY', nil), require_api_key: true) ⇒ OpenAI
constructor
A new instance of OpenAI.
Methods inherited from Client
default_model_for, for, provider_class, #resolved_model, #validate_supplemental_context!
Constructor Details
#initialize(api_url: API_URL, api_key: ENV.fetch('OPENAI_API_KEY', nil), require_api_key: true) ⇒ OpenAI
Returns a new instance of OpenAI.
10 11 12 13 14 15 16 |
# File 'lib/i18n_context_generator/llm/openai.rb', line 10 def initialize(api_url: API_URL, api_key: ENV.fetch('OPENAI_API_KEY', nil), require_api_key: true) super() @api_key = api_key raise Error, 'OPENAI_API_KEY environment variable is required' if require_api_key && !@api_key @uri = URI(api_url) end |
Instance Method Details
#generate_context(key:, text:, matches:, model: nil, comment: nil, include_file_paths: false, redact_prompts: true, max_prompt_chars: nil, supplemental_context: []) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/i18n_context_generator/llm/openai.rb', line 18 def generate_context(key:, text:, matches:, model: nil, comment: nil, include_file_paths: false, redact_prompts: true, max_prompt_chars: nil, supplemental_context: []) outcome = nil model = resolved_model(model) prompt = build_prompt( key: key, text: text, matches: matches, comment: comment, include_file_paths: include_file_paths, redact_prompts: redact_prompts, max_prompt_chars: max_prompt_chars, supplemental_context: supplemental_context ) outcome = request_with_retries(uri: @uri) { post_request(model: model, prompt: prompt) } handle_response(outcome.response, retries: outcome.retries) rescue PromptPreparationError => e ContextResult.new(description: 'Prompt preparation failed', error: e.) rescue StandardError => e ContextResult.new( description: 'API request failed', error: e., **failure_request_telemetry(e, outcome: outcome) ) end |