回复合成模块#
每个回复合成器的详细输入/输出可在下方找到。
API 示例#
以下展示了使用所有 kwargs 的设置。
response_mode指定使用哪个回复合成器service_context定义了用于合成的 LLM 及相关设置text_qa_template和refine_template是在不同阶段使用的提示词use_async目前仅用于tree_summarize回复模式,以异步构建摘要树streaming配置是否返回流式响应对象structured_answer_filtering启用对与给定问题不相关的文本块进行主动过滤
在 synthesize/asyntheszie 函数中,您可以选择提供额外的源节点,这些节点将被添加到 response.source_nodes 列表中。
from llama_index.core.data_structs import Node
from llama_index.core.schema import NodeWithScore
from llama_index.core import get_response_synthesizer
response_synthesizer = get_response_synthesizer(
response_mode="refine",
service_context=service_context,
text_qa_template=text_qa_template,
refine_template=refine_template,
use_async=False,
streaming=False,
)
# synchronous
response = response_synthesizer.synthesize(
"query string",
nodes=[NodeWithScore(node=Node(text="text"), score=1.0), ...],
additional_source_nodes=[
NodeWithScore(node=Node(text="text"), score=1.0),
...,
],
)
# asynchronous
response = await response_synthesizer.asynthesize(
"query string",
nodes=[NodeWithScore(node=Node(text="text"), score=1.0), ...],
additional_source_nodes=[
NodeWithScore(node=Node(text="text"), score=1.0),
...,
],
)
您还可以使用较低级别的 get_response 和 aget_response 函数直接返回一个字符串
response_str = response_synthesizer.get_response(
"query string", text_chunks=["text1", "text2", ...]
)