Documentation

Build LLM-powered agents
with production-ready TypeScript

DSPy for TypeScript. Working with LLMs is complex—they don't always do what you want. DSPy makes it easier to build amazing things with LLMs. Just define your inputs and outputs (signature) and an efficient prompt is auto-generated and used. Connect together various signatures to build complex systems and workflows using LLMs.

15+ LLM Providers
End-to-end Streaming
Auto Prompt Tuning

axRAG

function axRAG(queryFn: (query: string) => Promise<string>, options?: object): AxFlow<{
  originalQuestion: string;
}, {
  finalAnswer: string;
  healingAttempts: number;
  iterationCount: number;
  qualityAchieved: number;
  retrievedContexts: string[];
  totalHops: number;
}, object & object & object & object & object & object & object & object & object & object, {
  accumulatedContext: string;
  allEvidence: string[];
  answerGeneratorResult: BuildObject<[object & object, object & object]>;
  answerHealerResult: BuildObject<[object & object]>;
  completenessScore: number;
  contextualizerResult: BuildObject<[object & object]>;
  currentAnswer: string;
  currentHop: number;
  currentIssues: string[];
  currentQuality: number;
  currentQueries: string[];
  disableQualityHealing: boolean;
  evidenceSources: string[];
  evidenceSynthesizerResult: BuildObject<[object & object, object & object]>;
  gapAnalyzerResult: BuildObject<[object & object, object & object]>;
  healingAttempts: number;
  healingResult: {
     healingDocument: string;
  };
  iteration: number;
  maxHops: number;
  maxIterations: number;
  needsMoreInfo: boolean;
  originalQuestion: string;
  qualityAssessorResult: BuildObject<[object & object, object & object]>;
  qualityTarget: number;
  qualityThreshold: number;
  qualityValidatorResult: BuildObject<[object & object, object & object]>;
  queryGeneratorResult: BuildObject<[object & object, object & object]>;
  queryRefinerResult: BuildObject<[object & object]>;
  questionDecomposerResult: BuildObject<[object & object, object & object]>;
  retrievalResult: {
     retrievalConfidence: number;
     retrievedDocument: string;
  };
  retrievalResults: string[];
  retrievedContexts: string[];
  searchQuery: string;
  shouldContinue: boolean;
  shouldContinueHealing: boolean;
  synthesizedEvidence: string;
}>;

Defined in: https://github.com/ax-llm/ax/blob/9a5a7060a48f9eef46efc680b0cdf6b42bff5df2/src/ax/prompts/rag.ts#L12

Advanced Multi-hop RAG with iterative query refinement, context accumulation, parallel sub-queries, and self-healing quality feedback loops

Parameters

ParameterTypeDescription
queryFn(query: string) => Promise<string>Function to execute search queries and return results
options?{ debug?: boolean; disableQualityHealing?: boolean; logger?: AxFlowLoggerFunction; maxHops?: number; maxIterations?: number; qualityTarget?: number; qualityThreshold?: number; }Configuration options
options.debug?boolean-
options.disableQualityHealing?boolean-
options.logger?AxFlowLoggerFunction-
options.maxHops?number-
options.maxIterations?number-
options.qualityTarget?number-
options.qualityThreshold?number-

Returns

AxFlow<{ originalQuestion: string; }, { finalAnswer: string; healingAttempts: number; iterationCount: number; qualityAchieved: number; retrievedContexts: string[]; totalHops: number; }, object & object & object & object & object & object & object & object & object & object, { accumulatedContext: string; allEvidence: string[]; answerGeneratorResult: BuildObject<[object & object, object & object]>; answerHealerResult: BuildObject<[object & object]>; completenessScore: number; contextualizerResult: BuildObject<[object & object]>; currentAnswer: string; currentHop: number; currentIssues: string[]; currentQuality: number; currentQueries: string[]; disableQualityHealing: boolean; evidenceSources: string[]; evidenceSynthesizerResult: BuildObject<[object & object, object & object]>; gapAnalyzerResult: BuildObject<[object & object, object & object]>; healingAttempts: number; healingResult: { healingDocument: string; }; iteration: number; maxHops: number; maxIterations: number; needsMoreInfo: boolean; originalQuestion: string; qualityAssessorResult: BuildObject<[object & object, object & object]>; qualityTarget: number; qualityThreshold: number; qualityValidatorResult: BuildObject<[object & object, object & object]>; queryGeneratorResult: BuildObject<[object & object, object & object]>; queryRefinerResult: BuildObject<[object & object]>; questionDecomposerResult: BuildObject<[object & object, object & object]>; retrievalResult: { retrievalConfidence: number; retrievedDocument: string; }; retrievalResults: string[]; retrievedContexts: string[]; searchQuery: string; shouldContinue: boolean; shouldContinueHealing: boolean; synthesizedEvidence: string; }>

AxFlow instance with advanced RAG capability