Sha256: e82857a864f7babf3b7827ab959d30ad14b0b2a160e9b5873038b3d6856bf8b5

Contents?: true

Size: 1.12 KB

Versions: 24

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

module Luo
  class AIUI
    include Configurable

    setting :id, default: ENV.fetch('AIUI_APP_ID')
    setting :key, default: ENV.fetch('AIUI_APP_KEY')
    setting :host, default: 'http://api.iflyos.cn'
    setting :uid, default: -> { SecureRandom.hex(16) }
    setting :retries, default: ENV.fetch('AIUI_REQUEST_RETRIES', 3).to_i

    include HttpClient.init_client

    PARAMS = Dry::Schema.Params do
      required(:appid).filled(:string)
      required(:appkey).filled(:string)
      required(:uid).filled(:string)
      required(:text).filled(:string)
    end

    def request_aiui(params)
      client.post('/external/ls_log/aiui_request', params.to_h)
    end

    def chat(messages, temperature: nil)
      if messages.is_a?(Messages)
        messages = messages.to_a
      end
      message = messages.last&.fetch(:content, nil)
      params = PARAMS.call(
        appid: config.id,
        appkey: config.key,
        uid: config.uid.call,
        text: message
      )
      return params.errors unless params.success?
      request_aiui(params).body.dig("data", 0, "intent", "answer")
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
luo-0.2.7 lib/luo/aiui.rb
luo-0.2.6 lib/luo/aiui.rb
luo-0.2.5 lib/luo/aiui.rb
luo-0.2.4 lib/luo/aiui.rb
luo-0.2.3 lib/luo/aiui.rb
luo-0.2.2 lib/luo/aiui.rb
luo-0.2.1 lib/luo/aiui.rb
luo-0.2.0 lib/luo/aiui.rb
luo-0.1.25 lib/luo/aiui.rb
luo-0.1.24 lib/luo/aiui.rb
luo-0.1.23 lib/luo/aiui.rb
luo-0.1.22 lib/luo/aiui.rb
luo-0.1.21 lib/luo/aiui.rb
luo-0.1.20 lib/luo/aiui.rb
luo-0.1.18 lib/luo/aiui.rb
luo-0.1.17 lib/luo/aiui.rb
luo-0.1.16 lib/luo/aiui.rb
luo-0.1.15 lib/luo/aiui.rb
luo-0.1.14 lib/luo/aiui.rb
luo-0.1.13 lib/luo/aiui.rb