feat: prepare RAG evidence and compatible chat requests
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import { apiRequest } from './session'
|
||||
import type { Chunk } from './indexes'
|
||||
|
||||
export type CompletionOptions = { model: string; output_tokens?: number; token_parameter?: 'max_completion_tokens' | 'max_tokens'; instruction_role?: 'system' | 'developer'; temperature?: number | null }
|
||||
export type PrepareRagContext = { retrieval_run_id: string; completion: CompletionOptions; max_input_characters?: number; max_evidence?: number }
|
||||
export type RagEvidence = Chunk['provenance'] & { citation_id: string; chunk_id: string; chunk_ordinal: number; retrieval_rank: number; text: string; text_sha256: string; start_offset: number; end_offset: number }
|
||||
export type ChatCompletionsBody = { model: string; messages: { role: 'system' | 'developer' | 'user'; content: string }[]; stream: false; n: 1; store: false; max_completion_tokens?: number; max_tokens?: number; temperature?: number }
|
||||
export type RagContext = {
|
||||
id: string; kind: 'prepared_request'; model_called: false; status: 'prepared' | 'insufficient_evidence';
|
||||
reason: 'candidates_available' | 'no_candidates' | 'context_budget'; retrieval_run_id: string;
|
||||
retrieval_mode: 'keyword_chunks' | 'vector' | 'hybrid'; query: string; text_index_version_id: string;
|
||||
text_generation: number; catalog_revision: number; vector_version_id: string | null; vector_generation: number | null;
|
||||
corpus_fingerprint: string; prompt_version: 'nalati-evidence-v1'; completion: Required<CompletionOptions>;
|
||||
max_input_characters: number; input_characters: number; max_evidence: number; evidence: RagEvidence[];
|
||||
excluded: { chunk_id: string; reason: 'overlap' | 'budget' | 'evidence_limit' }[];
|
||||
request_body: ChatCompletionsBody | null; request_sha256: string | null; created_at: string;
|
||||
}
|
||||
export const prepareRagContext = (payload: PrepareRagContext) => apiRequest<RagContext>('/api/rag/contexts', { method: 'POST', body: JSON.stringify(payload) }, true)
|
||||
export const getRagContext = (id: string) => apiRequest<RagContext>(`/api/rag/contexts/${encodeURIComponent(id)}`)
|
||||
export const getRagContexts = (page = 1, pageSize = 20) => apiRequest<{ items: RagContext[]; total: number; page: number; page_size: number }>(`/api/rag/contexts?page=${page}&page_size=${pageSize}`)
|
||||
Reference in New Issue
Block a user