Class: VectorAmp::IntelligenceResource

Inherits:
Object
  • Object
show all
Defined in:
lib/vector_amp/intelligence.rb

Overview

Intelligence API resource for retrieval-augmented question answering.

Instance Method Summary collapse

Constructor Details

#initialize(transport) ⇒ IntelligenceResource

Parameters:

  • transport (#request)

    API transport.



10
11
12
# File 'lib/vector_amp/intelligence.rb', line 10

def initialize(transport)
  @transport = transport
end

Instance Method Details

#append_message(session_id, role:, content:, metadata: nil) ⇒ Hash

Append a message to a session.

Parameters:

  • session_id (String)

    session id.

  • role (String)

    message role: user, assistant, system, or tool.

  • content (String)

    message content.

  • metadata (Hash, nil) (defaults to: nil)

    optional message metadata.

Returns:

  • (Hash)

    created message.



88
89
90
91
# File 'lib/vector_amp/intelligence.rb', line 88

def append_message(session_id, role:, content:, metadata: nil)
  body = Utils.compact_hash(role: role, content: content, metadata: )
  @transport.request(:post, "/intelligence/sessions/#{session_id}/messages", body: body)
end

#create_session(title: nil, dataset_id: nil, workspace_id: nil, metadata: nil) ⇒ Hash

Create an intelligence conversation session.

Parameters:

  • title (String, nil) (defaults to: nil)

    optional session title.

  • dataset_id (String, nil) (defaults to: nil)

    optional dataset scope.

  • workspace_id (String, nil) (defaults to: nil)

    optional workspace id.

  • metadata (Hash, nil) (defaults to: nil)

    optional session metadata.

Returns:

  • (Hash)

    created session.



51
52
53
54
55
56
57
58
59
# File 'lib/vector_amp/intelligence.rb', line 51

def create_session(title: nil, dataset_id: nil, workspace_id: nil, metadata: nil)
  body = Utils.compact_hash(
    title: title,
    dataset_id: dataset_id,
    workspace_id: workspace_id,
    metadata: 
  )
  @transport.request(:post, "/intelligence/sessions", body: body)
end

#delete_session(session_id) ⇒ Hash

Delete an intelligence session.

Parameters:

  • session_id (String)

    session id.

Returns:

  • (Hash)

    delete response.



78
79
80
# File 'lib/vector_amp/intelligence.rb', line 78

def delete_session(session_id)
  @transport.request(:delete, "/intelligence/sessions/#{session_id}")
end

#get_session(session_id) ⇒ Hash

Fetch an intelligence session.

Parameters:

  • session_id (String)

    session id.

Returns:

  • (Hash)

    session resource.



71
72
73
# File 'lib/vector_amp/intelligence.rb', line 71

def get_session(session_id)
  @transport.request(:get, "/intelligence/sessions/#{session_id}")
end

#list_messages(session_id, limit: 100) ⇒ Hash

List messages in a session.

Parameters:

  • session_id (String)

    session id.

  • limit (Integer) (defaults to: 100)

    page size; defaults to 100.

Returns:

  • (Hash)

    response envelope with messages.



97
98
99
# File 'lib/vector_amp/intelligence.rb', line 97

def list_messages(session_id, limit: 100)
  @transport.request(:get, "/intelligence/sessions/#{session_id}/messages", query: { limit: limit })
end

#list_sessions(limit: 50) ⇒ Hash

List intelligence sessions.

Parameters:

  • limit (Integer) (defaults to: 50)

    page size; defaults to 50.

Returns:

  • (Hash)

    response envelope with sessions.



64
65
66
# File 'lib/vector_amp/intelligence.rb', line 64

def list_sessions(limit: 50)
  @transport.request(:get, "/intelligence/sessions", query: { limit: limit })
end

#query(query, dataset_id: nil, top_k: nil, conversation_history: nil, include_sources: nil, stream: false, **unknown) {|chunk| ... } ⇒ Hash, ...

Ask an intelligence query, optionally scoped to a dataset and streamed.

Parameters:

  • query (String)

    natural-language question.

  • dataset_id (String, nil) (defaults to: nil)

    optional dataset id scope.

  • top_k (Integer, nil) (defaults to: nil)

    optional retrieval result count.

  • conversation_history (Array<Hash>, nil) (defaults to: nil)

    optional prior conversation messages.

  • include_sources (Boolean, nil) (defaults to: nil)

    include source chunks/citations when supported.

  • stream (Boolean) (defaults to: false)

    stream chunks when true; defaults to false.

Yield Parameters:

  • chunk (Object)

    streamed response chunk when stream is true.

Returns:

  • (Hash, Enumerator, Object)

    response hash, enumerator without a stream block, or transport stream result.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/vector_amp/intelligence.rb', line 23

def query(query, dataset_id: nil, top_k: nil, conversation_history: nil, include_sources: nil, stream: false, **unknown, &block)
  Utils.ensure_no_unknown!(unknown, "query")
  body = Utils.compact_hash(
    query: query,
    dataset_id: dataset_id,
    top_k: top_k,
    conversation_history: conversation_history,
    include_sources: include_sources,
    stream: stream
  )

  if stream
    return enum_for(:query, query, dataset_id: dataset_id, top_k: top_k,
                    conversation_history: conversation_history, include_sources: include_sources,
                    stream: true) unless block

    @transport.request(:post, "/intelligence/query", body: body, stream: true, &block)
  else
    @transport.request(:post, "/intelligence/query", body: body)
  end
end