diff --git a/.changeset/pretty-swans-fly.md b/.changeset/pretty-swans-fly.md new file mode 100644 index 0000000000000000000000000000000000000000..07bff4615fc81932faee7df6777a952408914f80 --- /dev/null +++ b/.changeset/pretty-swans-fly.md @@ -0,0 +1,5 @@ +--- +"@llamaindex/core": patch +--- + +fix: source nodes is empty diff --git a/packages/core/src/response-synthesizers/base-synthesizer.ts b/packages/core/src/response-synthesizers/base-synthesizer.ts index 11c92d2dc794ece0ee6e5d94a0a3b173aaff39f2..756eddd48482ab558a237fceb1c64e3d84cdabe6 100644 --- a/packages/core/src/response-synthesizers/base-synthesizer.ts +++ b/packages/core/src/response-synthesizers/base-synthesizer.ts @@ -43,9 +43,9 @@ export abstract class BaseSynthesizer extends PromptMixin { let response: EngineResponse | AsyncIterable<EngineResponse>; if (query.nodes.length === 0) { if (stream) { - response = EngineResponse.fromResponse("Empty Response", true); + response = EngineResponse.fromResponse("Empty Response", true, []); } else { - response = EngineResponse.fromResponse("Empty Response", false); + response = EngineResponse.fromResponse("Empty Response", false, []); } } else { const queryMessage: MessageContent = diff --git a/packages/core/src/response-synthesizers/factory.ts b/packages/core/src/response-synthesizers/factory.ts index 85d4d3e5fd0c685450ace59dcb593438cadc9a37..0b0ff673dfccaa0972674adb91e18a4fd80dda68 100644 --- a/packages/core/src/response-synthesizers/factory.ts +++ b/packages/core/src/response-synthesizers/factory.ts @@ -108,10 +108,10 @@ class Refine extends BaseSynthesizer { // fixme: no source nodes provided, cannot fix right now due to lack of context if (typeof response === "string") { - return EngineResponse.fromResponse(response, false); + return EngineResponse.fromResponse(response, false, nodes); } else { return streamConverter(response!, (text) => - EngineResponse.fromResponse(text, true), + EngineResponse.fromResponse(text, true, nodes), ); } } @@ -293,12 +293,13 @@ class TreeSummarize extends BaseSynthesizer { if (stream) { const response = await this.llm.complete({ ...params, stream }); return streamConverter(response, (chunk) => - EngineResponse.fromResponse(chunk.text, true), + EngineResponse.fromResponse(chunk.text, true, nodes), ); } return EngineResponse.fromResponse( (await this.llm.complete(params)).text, false, + nodes, ); } else { const summaries = await Promise.all( @@ -393,13 +394,13 @@ class MultiModal extends BaseSynthesizer { stream, }); return streamConverter(response, ({ text }) => - EngineResponse.fromResponse(text, true), + EngineResponse.fromResponse(text, true, nodes), ); } const response = await llm.complete({ prompt, }); - return EngineResponse.fromResponse(response.text, false); + return EngineResponse.fromResponse(response.text, false, nodes); } } diff --git "a/packages/core/src/schema/type/engine\342\200\223response.ts" "b/packages/core/src/schema/type/engine\342\200\223response.ts" index 4f7086414ac27db73fc4b5752663ec1fc680bafa..e540ad65ec3724c0b3cefe930337795ad123e542 100644 --- "a/packages/core/src/schema/type/engine\342\200\223response.ts" +++ "b/packages/core/src/schema/type/engine\342\200\223response.ts" @@ -26,7 +26,7 @@ export class EngineResponse implements ChatResponse, ChatResponseChunk { static fromResponse( response: string, stream: boolean, - sourceNodes?: NodeWithScore[], + sourceNodes: NodeWithScore[], ): EngineResponse { return new EngineResponse( EngineResponse.toChatResponse(response),