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(
|
class RequestError(
|
||||||
RuntimeError
|
RuntimeError
|
||||||
):
|
):
|
||||||
@ -766,6 +809,32 @@ def parse_tool_arguments(
|
|||||||
return parsed
|
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(
|
def run_question(
|
||||||
question: str,
|
question: str,
|
||||||
*,
|
*,
|
||||||
@ -804,14 +873,11 @@ def run_question(
|
|||||||
str
|
str
|
||||||
] = []
|
] = []
|
||||||
|
|
||||||
messages: list[
|
messages = (
|
||||||
dict[str, Any]
|
build_initial_messages(
|
||||||
] = [
|
question
|
||||||
{
|
)
|
||||||
"role": "user",
|
)
|
||||||
"content": question,
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
first_started = (
|
first_started = (
|
||||||
time.perf_counter()
|
time.perf_counter()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user