Class: RubyLLM::Providers::Perplexity

Inherits:
OpenAI show all
Includes:
Chat, Models
Defined in:
lib/ruby_llm/providers/perplexity.rb,
lib/ruby_llm/providers/perplexity/chat.rb,
lib/ruby_llm/providers/perplexity/models.rb,
lib/ruby_llm/providers/perplexity/capabilities.rb

Overview

Perplexity API integration.

Defined Under Namespace

Modules: Capabilities, Chat, Models

Constant Summary

Constants included from OpenAI::Tools

OpenAI::Tools::EMPTY_PARAMETERS_SCHEMA

Instance Attribute Summary

Attributes inherited from RubyLLM::Provider

#config, #connection

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Models

#create_model_info, #list_models, #parse_list_models_response

Methods included from Chat

format_role

Methods inherited from OpenAI

#maybe_normalize_temperature

Methods included from OpenAI::Transcription

encode_speaker_references, parse_transcription_response, render_transcription_payload, response_format_for, supports_chunking_strategy?, transcription_url

Methods included from OpenAI::Media

format_audio, format_content, format_image, format_pdf, format_text, format_text_file

Methods included from OpenAI::Images

images_url, parse_image_response, render_image_payload

Methods included from OpenAI::Tools

format_tool_calls, param_schema, parameters_schema_for, parse_tool_call_arguments, parse_tool_calls, schema_from_parameters, tool_for

Methods included from OpenAI::Streaming

build_chunk, parse_streaming_error, stream_url

Methods included from OpenAI::Moderation

moderation_url, parse_moderation_response, render_moderation_payload

Methods included from OpenAI::Models

models_url, parse_list_models_response

Methods included from OpenAI::Embeddings

embedding_url, parse_embedding_response, render_embedding_payload

Methods included from OpenAI::Chat

#completion_url, format_messages, format_role, parse_completion_response, render_payload

Methods inherited from RubyLLM::Provider

#capabilities, #complete, #configuration_requirements, configured?, #configured?, configured_providers, configured_remote_providers, #embed, for, #format_messages, #format_tool_calls, #initialize, #list_models, #local?, local?, local_providers, #moderate, #name, name, #paint, #parse_tool_calls, providers, register, remote?, #remote?, remote_providers, resolve, slug, #slug, #transcribe

Methods included from Streaming

handle_stream, stream_response

Constructor Details

This class inherits a constructor from RubyLLM::Provider

Class Method Details

.capabilitiesObject



22
23
24
# File 'lib/ruby_llm/providers/perplexity.rb', line 22

def capabilities
  Perplexity::Capabilities
end

.configuration_requirementsObject



26
27
28
# File 'lib/ruby_llm/providers/perplexity.rb', line 26

def configuration_requirements
  i[perplexity_api_key]
end

Instance Method Details

#api_baseObject



10
11
12
# File 'lib/ruby_llm/providers/perplexity.rb', line 10

def api_base
  'https://api.perplexity.ai'
end

#headersObject



14
15
16
17
18
19
# File 'lib/ruby_llm/providers/perplexity.rb', line 14

def headers
  {
    'Authorization' => "Bearer #{@config.perplexity_api_key}",
    'Content-Type' => 'application/json'
  }
end

#parse_error(response) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ruby_llm/providers/perplexity.rb', line 31

def parse_error(response)
  body = response.body
  return if body.empty?

  # If response is HTML (Perplexity returns HTML for auth errors)
  if body.include?('<html>') && body.include?('<title>')
    title_match = body.match(%r{<title>(.+?)</title>})
    if title_match
      message = title_match[1]
      message = message.sub(/^\d+\s+/, '')
      return message
    end
  end
  super
end