uprava
This commit is contained in:
parent
c13f5a39ee
commit
b0febb6f98
@ -54,6 +54,49 @@ MARKDOWN_URL_RE = re.compile(
|
||||
)
|
||||
|
||||
|
||||
TOOL_ROUTING_SYSTEM_PROMPT = """
|
||||
Si prvá fáza RAG agenta pre ZP Wiki.
|
||||
|
||||
Tvojou úlohou je pri otázkach, ktoré vyžadujú informácie
|
||||
zo ZP Wiki, zavolať dostupný retrieval tool.
|
||||
|
||||
Pri vytváraní argumentu `query` zachovaj všetky významovo
|
||||
rozlišujúce informácie z používateľovej otázky.
|
||||
|
||||
Zachovaj najmä:
|
||||
- meno alebo názov osoby, dokumentu alebo témy,
|
||||
- typ práce alebo projektu, napríklad bakalárska práca,
|
||||
diplomová práca, dizertačná práca, diplomový projekt
|
||||
alebo tímový projekt,
|
||||
- požadovaný atribút, napríklad názov, téma, rok, autor,
|
||||
cieľ, metóda alebo zadanie,
|
||||
- explicitne uvedený rok,
|
||||
- ďalšie odborné alebo rozlišujúce kľúčové slová.
|
||||
|
||||
Query môže byť stručnejší než pôvodná otázka, ale nesmie
|
||||
stratiť významové obmedzenia potrebné na správne vyhľadanie.
|
||||
|
||||
Napríklad otázku:
|
||||
"Aká téma diplomovej práce je uvedená pri osobe Ján Novák?"
|
||||
je vhodné previesť na query podobný:
|
||||
"Ján Novák diplomová práca téma"
|
||||
|
||||
Nevhodné je zredukovať ju iba na:
|
||||
"Ján Novák"
|
||||
|
||||
Podobne pri otázke na rok diplomovej práce musí query
|
||||
zachovať meno osoby, pojem diplomová práca a informáciu,
|
||||
že sa hľadá rok.
|
||||
|
||||
Nevymýšľaj hodnoty, ktoré používateľ v otázke neuviedol.
|
||||
Nevkladaj do query predpokladanú odpoveď.
|
||||
|
||||
Ak je potrebné použiť ZP Wiki, najprv zavolaj retrieval tool.
|
||||
Po získaní výsledku odpovedaj iba podľa informácií,
|
||||
inštrukcií, kontextu a zdrojov vrátených toolom.
|
||||
""".strip()
|
||||
|
||||
|
||||
class RequestError(
|
||||
RuntimeError
|
||||
):
|
||||
@ -766,6 +809,32 @@ def parse_tool_arguments(
|
||||
return parsed
|
||||
|
||||
|
||||
def build_initial_messages(
|
||||
question: str,
|
||||
) -> list[dict[str, Any]]:
|
||||
question = (
|
||||
question.strip()
|
||||
)
|
||||
|
||||
if not question:
|
||||
raise RuntimeError(
|
||||
"Otázka je prázdna."
|
||||
)
|
||||
|
||||
return [
|
||||
{
|
||||
"role": "system",
|
||||
"content": (
|
||||
TOOL_ROUTING_SYSTEM_PROMPT
|
||||
),
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": question,
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def run_question(
|
||||
question: str,
|
||||
*,
|
||||
@ -804,14 +873,11 @@ def run_question(
|
||||
str
|
||||
] = []
|
||||
|
||||
messages: list[
|
||||
dict[str, Any]
|
||||
] = [
|
||||
{
|
||||
"role": "user",
|
||||
"content": question,
|
||||
}
|
||||
]
|
||||
messages = (
|
||||
build_initial_messages(
|
||||
question
|
||||
)
|
||||
)
|
||||
|
||||
first_started = (
|
||||
time.perf_counter()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user