llama-index

Форк
0
1
from typing import Callable, Optional
2

3
from llama_index.legacy.bridge.pydantic import BaseModel
4
from llama_index.legacy.callbacks.base import CallbackManager
5
from llama_index.legacy.prompts import BasePromptTemplate
6
from llama_index.legacy.prompts.default_prompt_selectors import (
7
    DEFAULT_REFINE_PROMPT_SEL,
8
    DEFAULT_TEXT_QA_PROMPT_SEL,
9
    DEFAULT_TREE_SUMMARIZE_PROMPT_SEL,
10
)
11
from llama_index.legacy.prompts.default_prompts import DEFAULT_SIMPLE_INPUT_PROMPT
12
from llama_index.legacy.prompts.prompts import PromptTemplate
13
from llama_index.legacy.response_synthesizers.accumulate import Accumulate
14
from llama_index.legacy.response_synthesizers.base import BaseSynthesizer
15
from llama_index.legacy.response_synthesizers.compact_and_accumulate import (
16
    CompactAndAccumulate,
17
)
18
from llama_index.legacy.response_synthesizers.compact_and_refine import CompactAndRefine
19
from llama_index.legacy.response_synthesizers.generation import Generation
20
from llama_index.legacy.response_synthesizers.no_text import NoText
21
from llama_index.legacy.response_synthesizers.refine import Refine
22
from llama_index.legacy.response_synthesizers.simple_summarize import SimpleSummarize
23
from llama_index.legacy.response_synthesizers.tree_summarize import TreeSummarize
24
from llama_index.legacy.response_synthesizers.type import ResponseMode
25
from llama_index.legacy.service_context import ServiceContext
26
from llama_index.legacy.types import BasePydanticProgram
27

28

29
def get_response_synthesizer(
30
    service_context: Optional[ServiceContext] = None,
31
    text_qa_template: Optional[BasePromptTemplate] = None,
32
    refine_template: Optional[BasePromptTemplate] = None,
33
    summary_template: Optional[BasePromptTemplate] = None,
34
    simple_template: Optional[BasePromptTemplate] = None,
35
    response_mode: ResponseMode = ResponseMode.COMPACT,
36
    callback_manager: Optional[CallbackManager] = None,
37
    use_async: bool = False,
38
    streaming: bool = False,
39
    structured_answer_filtering: bool = False,
40
    output_cls: Optional[BaseModel] = None,
41
    program_factory: Optional[Callable[[PromptTemplate], BasePydanticProgram]] = None,
42
    verbose: bool = False,
43
) -> BaseSynthesizer:
44
    """Get a response synthesizer."""
45
    text_qa_template = text_qa_template or DEFAULT_TEXT_QA_PROMPT_SEL
46
    refine_template = refine_template or DEFAULT_REFINE_PROMPT_SEL
47
    simple_template = simple_template or DEFAULT_SIMPLE_INPUT_PROMPT
48
    summary_template = summary_template or DEFAULT_TREE_SUMMARIZE_PROMPT_SEL
49

50
    service_context = service_context or ServiceContext.from_defaults(
51
        callback_manager=callback_manager
52
    )
53

54
    if response_mode == ResponseMode.REFINE:
55
        return Refine(
56
            service_context=service_context,
57
            text_qa_template=text_qa_template,
58
            refine_template=refine_template,
59
            output_cls=output_cls,
60
            streaming=streaming,
61
            structured_answer_filtering=structured_answer_filtering,
62
            program_factory=program_factory,
63
            verbose=verbose,
64
        )
65
    elif response_mode == ResponseMode.COMPACT:
66
        return CompactAndRefine(
67
            service_context=service_context,
68
            text_qa_template=text_qa_template,
69
            refine_template=refine_template,
70
            output_cls=output_cls,
71
            streaming=streaming,
72
            structured_answer_filtering=structured_answer_filtering,
73
            program_factory=program_factory,
74
            verbose=verbose,
75
        )
76
    elif response_mode == ResponseMode.TREE_SUMMARIZE:
77
        return TreeSummarize(
78
            service_context=service_context,
79
            summary_template=summary_template,
80
            output_cls=output_cls,
81
            streaming=streaming,
82
            use_async=use_async,
83
            verbose=verbose,
84
        )
85
    elif response_mode == ResponseMode.SIMPLE_SUMMARIZE:
86
        return SimpleSummarize(
87
            service_context=service_context,
88
            text_qa_template=text_qa_template,
89
            streaming=streaming,
90
        )
91
    elif response_mode == ResponseMode.GENERATION:
92
        return Generation(
93
            service_context=service_context,
94
            simple_template=simple_template,
95
            streaming=streaming,
96
        )
97
    elif response_mode == ResponseMode.ACCUMULATE:
98
        return Accumulate(
99
            service_context=service_context,
100
            text_qa_template=text_qa_template,
101
            output_cls=output_cls,
102
            streaming=streaming,
103
            use_async=use_async,
104
        )
105
    elif response_mode == ResponseMode.COMPACT_ACCUMULATE:
106
        return CompactAndAccumulate(
107
            service_context=service_context,
108
            text_qa_template=text_qa_template,
109
            output_cls=output_cls,
110
            streaming=streaming,
111
            use_async=use_async,
112
        )
113
    elif response_mode == ResponseMode.NO_TEXT:
114
        return NoText(
115
            service_context=service_context,
116
            streaming=streaming,
117
        )
118
    else:
119
        raise ValueError(f"Unknown mode: {response_mode}")
120

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.