跳到内容

回复合成模块#

每个回复合成器的详细输入/输出可在下方找到。

API 示例#

以下展示了使用所有 kwargs 的设置。

  • response_mode 指定使用哪个回复合成器
  • service_context 定义了用于合成的 LLM 及相关设置
  • text_qa_templaterefine_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_responseaget_response 函数直接返回一个字符串

response_str = response_synthesizer.get_response(
    "query string", text_chunks=["text1", "text2", ...]
)

示例 Notebooks#