Class: RailsMcpCodeSearch::Embeddings::OpenaiAdapter
- Defined in:
- lib/rails_mcp_code_search/embeddings/openai_adapter.rb
Constant Summary collapse
- DIMENSIONS =
1536- MODEL =
"text-embedding-3-small"- MAX_RETRIES =
3- MAX_CHARS =
15_000- ApiKeyError =
Class.new(StandardError)
Instance Method Summary collapse
- #dimensions ⇒ Object
- #embed(texts) ⇒ Object
-
#initialize ⇒ OpenaiAdapter
constructor
A new instance of OpenaiAdapter.
Constructor Details
#initialize ⇒ OpenaiAdapter
Returns a new instance of OpenaiAdapter.
13 14 15 16 17 18 19 |
# File 'lib/rails_mcp_code_search/embeddings/openai_adapter.rb', line 13 def initialize api_key = ENV["RAILS_MCP_CODE_SEARCH_OPENAI_API_KEY"] raise ApiKeyError, "RAILS_MCP_CODE_SEARCH_OPENAI_API_KEY environment variable is required for OpenAI provider" unless api_key @client = OpenAI::Client.new(access_token: api_key) @warned = false end |
Instance Method Details
#dimensions ⇒ Object
39 |
# File 'lib/rails_mcp_code_search/embeddings/openai_adapter.rb', line 39 def dimensions = DIMENSIONS |
#embed(texts) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rails_mcp_code_search/embeddings/openai_adapter.rb', line 21 def (texts) texts = Array(texts).map { truncate(_1) } warn_once retries = 0 begin response = @client.(parameters: { model: MODEL, input: texts }) response.dig("data").sort_by { _1["index"] }.map { _1["embedding"] } rescue Faraday::TooManyRequestsError retries += 1 raise if retries > MAX_RETRIES sleep(2**retries) retry rescue => e raise sanitize_error(e) end end |