luo 0.1.22 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.idea/dictionaries/mj.xml +7 -0
 - data/Gemfile.lock +1 -1
 - data/lib/luo/http_client.rb +2 -2
 - data/lib/luo/marqo.rb +62 -0
 - data/lib/luo/version.rb +1 -1
 - data/lib/luo.rb +1 -0
 - data/luo.ps1 +31 -0
 - metadata +5 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: da7e7e0df02d38335512659fd3318128d4301348de6672b98856f89d75b1226e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 44709abe694e80b8bc5917a2a28221fca9f0f5ce94e1a2e3930158ff10efe75b
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 95125f5f27fea04c632280849c3e278729359c9bd95f943fe2f3cd09884443bb6e8a70d5ff5330a77c173837b59a828fd9a582947cade2805e62f26612663e9c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 76e510443ed91db9a617274c58914950796bf979da2974ef72e4af37a4b35e478bc3b6e8887d1c7330ad1c8fb598cc75d5058cfd584b278ef7020c4823856474
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/lib/luo/http_client.rb
    CHANGED
    
    | 
         @@ -2,10 +2,10 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Luo
         
     | 
| 
       4 
4 
     | 
    
         
             
              module HttpClient
         
     | 
| 
       5 
     | 
    
         
            -
                def self.init_client
         
     | 
| 
      
 5 
     | 
    
         
            +
                def self.init_client(options={})
         
     | 
| 
       6 
6 
     | 
    
         
             
                  Module.new do
         
     | 
| 
       7 
7 
     | 
    
         
             
                    define_method :client do
         
     | 
| 
       8 
     | 
    
         
            -
                      @client ||= Faraday.new(self.class.config.host) { |conn|
         
     | 
| 
      
 8 
     | 
    
         
            +
                      @client ||= Faraday.new(self.class.config.host, options) { |conn|
         
     | 
| 
       9 
9 
     | 
    
         
             
                        conn.request :authorization, 'Bearer', self.class.config.access_token if self.class.config.respond_to?(:access_token) && !self.class.config.access_token.nil?
         
     | 
| 
       10 
10 
     | 
    
         
             
                        conn.request :retry, max: (self.class.config.retries || 3), interval: 0.05,
         
     | 
| 
       11 
11 
     | 
    
         
             
                                     interval_randomness: 0.5, backoff_factor: 2,
         
     | 
    
        data/lib/luo/marqo.rb
    ADDED
    
    | 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Luo
         
     | 
| 
      
 4 
     | 
    
         
            +
              class Marqo
         
     | 
| 
      
 5 
     | 
    
         
            +
                include Configurable
         
     | 
| 
      
 6 
     | 
    
         
            +
                setting :host, default: "http://localhost:8882"
         
     | 
| 
      
 7 
     | 
    
         
            +
                setting :x_api_key, default: nil
         
     | 
| 
      
 8 
     | 
    
         
            +
                setting :retries, default: ENV.fetch('OPENAI_REQUEST_RETRIES', 3).to_i
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                include HttpClient.init_client(headers: { 'X-API-KEY' => config.x_api_key })
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                SEARCH_PARAMS = Dry::Schema.Params do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  required(:q).filled(:string)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  optional(:limit).maybe(:integer)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  optional(:offset).maybe(:integer)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  optional(:filter).maybe(:string)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  optional(:searchableAttributes).maybe(:array)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  optional(:showHighlights).maybe(:bool)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  optional(:searchMethod).value(included_in?: %w[TENSOR LEXICAL])
         
     | 
| 
      
 20 
     | 
    
         
            +
                  optional(:attributesToRetrieve).maybe(:array)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  optional(:reRanker).maybe(:string)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  optional(:boost).maybe(:hash)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  optional(:image_download_headers).maybe(:hash)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  optional(:context).maybe(:hash)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  optional(:scoreModifiers).maybe(:hash)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  optional(:modelAuth).maybe(:hash)
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                def index(index_name)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @index_name = index_name
         
     | 
| 
      
 31 
     | 
    
         
            +
                  self
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                ##
         
     | 
| 
      
 35 
     | 
    
         
            +
                # 添加文档到向量数据库
         
     | 
| 
      
 36 
     | 
    
         
            +
                def add_documents(hash, non_tensor_fields: nil)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  client.post("/indexes/#{@index_name}/documents") do |req|
         
     | 
| 
      
 38 
     | 
    
         
            +
                    req.params[:non_tensor_fields] = non_tensor_fields unless non_tensor_fields.nil?
         
     | 
| 
      
 39 
     | 
    
         
            +
                    req.body = hash
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def refresh
         
     | 
| 
      
 44 
     | 
    
         
            +
                  client.post("/indexes/#{@index_name}/refresh")
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def search(params)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  params = SEARCH_PARAMS.call(params)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  return params.errors unless params.success?
         
     | 
| 
      
 50 
     | 
    
         
            +
                  client.post("/indexes/#{@index_name}/search", params.to_h)
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                def delete(id_or_ids)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  id_or_ids = [id_or_ids] if id_or_ids.is_a?(String)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  client.post("/indexes/#{@index_name}/documents/delete-batch", id_or_ids)
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                def remove
         
     | 
| 
      
 59 
     | 
    
         
            +
                  client.delete("/indexes/#{@index_name}")
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/luo/version.rb
    CHANGED
    
    
    
        data/lib/luo.rb
    CHANGED
    
    
    
        data/luo.ps1
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            function Get-ScriptRoot {
         
     | 
| 
      
 2 
     | 
    
         
            +
                $result = $PSScriptRoot
         
     | 
| 
      
 3 
     | 
    
         
            +
                if ($result.Length -eq 0) {
         
     | 
| 
      
 4 
     | 
    
         
            +
                    $result = split-path -parent $MyInvocation.MyCommand.Definition
         
     | 
| 
      
 5 
     | 
    
         
            +
                }
         
     | 
| 
      
 6 
     | 
    
         
            +
                return $result
         
     | 
| 
      
 7 
     | 
    
         
            +
            }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            function Set-LuoPath {
         
     | 
| 
      
 10 
     | 
    
         
            +
                $test_path = ([System.Environment]::GetEnvironmentVariable('PATH') | findstr (Get-ScriptRoot)).Length
         
     | 
| 
      
 11 
     | 
    
         
            +
                if ($test_path -eq 0) {
         
     | 
| 
      
 12 
     | 
    
         
            +
                    [System.Environment]::SetEnvironmentVariable('PATH', "${Env:PATH};" + (Get-ScriptRoot))
         
     | 
| 
      
 13 
     | 
    
         
            +
                    $Env:PATH += ";" + (Get-ScriptRoot)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    Write-Host "=== PATH set for Luo ==="
         
     | 
| 
      
 15 
     | 
    
         
            +
                }
         
     | 
| 
      
 16 
     | 
    
         
            +
            }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            Set-LuoPath
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            if ($args[0] -eq "update") {
         
     | 
| 
      
 21 
     | 
    
         
            +
                Write-Host "Pulling the latest Docker image..."
         
     | 
| 
      
 22 
     | 
    
         
            +
                docker pull ghcr.io/mjason/luo:latest
         
     | 
| 
      
 23 
     | 
    
         
            +
            }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Write-Host "Running the Docker container..."
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            docker run --rm -it `
         
     | 
| 
      
 28 
     | 
    
         
            +
                -p 8888:8888 `
         
     | 
| 
      
 29 
     | 
    
         
            +
                -v "${PWD}:/workdir" `
         
     | 
| 
      
 30 
     | 
    
         
            +
                ghcr.io/mjason/luo:latest `
         
     | 
| 
      
 31 
     | 
    
         
            +
                $args
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: luo
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.24
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - MJ
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2023-05- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2023-05-15 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: zeitwerk
         
     | 
| 
         @@ -175,6 +175,7 @@ extensions: [] 
     | 
|
| 
       175 
175 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       176 
176 
     | 
    
         
             
            files:
         
     | 
| 
       177 
177 
     | 
    
         
             
            - ".idea/.gitignore"
         
     | 
| 
      
 178 
     | 
    
         
            +
            - ".idea/dictionaries/mj.xml"
         
     | 
| 
       178 
179 
     | 
    
         
             
            - ".idea/inspectionProfiles/Project_Default.xml"
         
     | 
| 
       179 
180 
     | 
    
         
             
            - ".idea/luo.iml"
         
     | 
| 
       180 
181 
     | 
    
         
             
            - ".idea/misc.xml"
         
     | 
| 
         @@ -201,6 +202,7 @@ files: 
     | 
|
| 
       201 
202 
     | 
    
         
             
            - lib/luo/http_client.rb
         
     | 
| 
       202 
203 
     | 
    
         
             
            - lib/luo/init_project.rb
         
     | 
| 
       203 
204 
     | 
    
         
             
            - lib/luo/loader.rb
         
     | 
| 
      
 205 
     | 
    
         
            +
            - lib/luo/marqo.rb
         
     | 
| 
       204 
206 
     | 
    
         
             
            - lib/luo/memory_history.rb
         
     | 
| 
       205 
207 
     | 
    
         
             
            - lib/luo/messages.rb
         
     | 
| 
       206 
208 
     | 
    
         
             
            - lib/luo/open_ai.rb
         
     | 
| 
         @@ -233,6 +235,7 @@ files: 
     | 
|
| 
       233 
235 
     | 
    
         
             
            - luo
         
     | 
| 
       234 
236 
     | 
    
         
             
            - luo.gemspec
         
     | 
| 
       235 
237 
     | 
    
         
             
            - luo.ipynb
         
     | 
| 
      
 238 
     | 
    
         
            +
            - luo.ps1
         
     | 
| 
       236 
239 
     | 
    
         
             
            - sig/luo.rbs
         
     | 
| 
       237 
240 
     | 
    
         
             
            - sig/luo/agent.rbs
         
     | 
| 
       238 
241 
     | 
    
         
             
            - sig/luo/agent_runner_base.rbs
         
     |