AI pro smlouvy v Team assistant
Tento návod popisuje, co je nutné udělat, aby AI nad Smlouvami správně fungovala v jakémkoliv projektu.
Je vhodný pro konzultanty i partnery, kteří řeší implementace v Team assistant.
Zajisti si Azure API Key
Nejdřív je potřeba mít funkční přístup k Azure OpenAI:
- Endpoint
- Model (GPT-4o / GPT-4.1)
- API Key
Nejlepší praxe je uložit tyto hodnoty do: local.js (lokální konfigurace)
Přidej skripty do instance
Skripty (výpočty)
Používají se na úkolech, obsahují logiku promptů a hlavní AI API volání
Obsahují:
- AI prompts – Tyto funkce tvoří prompty — tedy instrukce pro AI. Můžou se doplňovat k uživatelským dotazům nebo k automatickým analýzám.
- AI scripts – Je to jednotná API brána pro všechny AI úkony.Podle parametru
moderozhodne, jak má AI pracovat.
Skripty (CO React) - CaseOverview v Reactu
Zobrazují AI chatovací okno v React caseoverview
Tyto skripty jsou určeny jen pro CaseOverview, nikoliv pro úkoly.
Obsahují:
- SendButtonCO – renderuje tlačítko „Send“
- AI ChatBox – komponenta pro zobrazení historie AI konverzace
Skripty (CO) - Dynamické podmínky
Vkládají chatovací okno do úkolu přes dynamické podmínky
Tyhle skripty slouží ke zobrazení AI okna v samotném úkolu, ne v CO.
Obsahují:
- SendButtonDP – přidává tlačítko „Send“ do sekce úkolu
- AI ChatBox – vykreslí chatovací okno uvnitř úkolu
Přidej potřebné proměnné do šablony
Minimální sada:
Proměnná | Popis | Typ proměnné |
| vstup pro dotaz uživatele | text s více řádky |
| historie chatu | text |
| historie chatu na caseoverview (chat na caseoverview se zobrazuje podle uživatele) | text |
| zobrazení tlačítka "Potvrzení" pro odeslání promptu do AI | text |
| historie chatu | text s více řádky |
Přidej AI volání na šablonu
Volání AI z caseoverview
- Přidej událost "Ask AI about contract", mapuj do ní proměnnou
promptFieldTak se zajistí, že stisk tlačítka spustí AI dotaz. - Úprava Case Overview
Chatovací okno do úkolu (schvalovací úkoly)
- Přidej do úkolu sekci "AI" a namapuj do ně proměnné ve stavu "W" (write)
- responseWindow
- promptField
- _sendButtonHolder
- Přidej do úkolu dynamické podmínky
// AI section
//----------------------------------------------------------------------------------------------------------------------------------------------------//
//set height for WYSIWIG editor and adjust the style
setEditorFontSizeAndHeight();
//create chat window
//if (vSync('_arrayOfMessages')) {
createChatBox({
addInfoVar: 'responseWindow',
configMessages: JSON.parse(vSync('_arrayOfMessages'))
})
//}
const onSendButtonFunction = (e) => {
e.preventDefault()
const taskRecalcButton = document.querySelector(`#task-recalc-btn`);
console.log("taskRecalcButton", {
taskRecalcButton
});
taskRecalcButton.click();
};
addSendButton({
message: "Send",
addInfoVar: '_sendButtonHolder',
})
varDefOn('_sendButtonHolder', true, () => {
return {
ivar_name_cs: '',
ivar_name: '',
ivar_name_sk: '',
ivar_name_pl: '',
ivar_name_hr: '',
ivar_name_ro: '',
ivar_name_en: '',
}
})
- Přidej do úkolu výpočet s voláním AI
Na úkol přidej výpočet, který se spustí při události (tlačítko / přepočet) a provede samotné volání do Azure AI v režimu chat:
const response = callAzureAI({
mode: 'chat',
enteredText: vars['promptField'].getValue(),
selectedFiles: vars['contractCleanCopy'].getValue(), // smlouva
previousMessagesJson: vars['_arrayOfMessages'].getValue(),
defaultInstructionPrompt: generalContracts(),
config
});
// Uložení aktualizované konverzace
vars['_arrayOfMessages'].setValue(response.messagesJson);
// Reset vstupního pole pro další dotaz
vars['promptField'].setValue('');
// Zobrazení odpovědi v okně pro uživatele
vars['responseWindow'].setValue(response.reply);Vyčtení smlouvy (DOCX, PDF) do proměnných (úkol "Vložit čistopis smlouvy")
- Přidej do úkolu výpočet s voláním AI
//** extract contract PDF in to the variables */
// 1) Call unified AI function (RAW mode)
const response = callAzureAI({
mode: 'raw',
enteredText: extractContractFile(),
selectedFiles: vars['contractCleanCopy'].getValue(),
config
});
// 2) Convert markdown → HTML (same as before)
const aiOutput = markdownToHtml(response.reply);
// 3) Clean and parse JSON (same as before)
const cleanedJson = aiOutput.replace(/<br>/g, "").trim();
const outputParsed = JSON.parse(cleanedJson);
// 4) Set variables
vars['contractTitle'].setValue(outputParsed.contractTitle);
vars['contractSubject'].setValue(outputParsed.description);
vars['supplier'].setValue(outputParsed.partyBName);
vars['supplierRepresentativeContact'].setValue(outputParsed.partyBRepresentative);
vars['totalWoVat'].setValue(outputParsed.amount);
// 5) Static defaults
vars['contractCategory'].setValue('financialPerformanceWithPO');
vars['paymentFrequency'].setValue('Monthly');
Manažerský souhrn smlouvy (úkol "Technical task - general and approval matrix")
- Přidej do úkolu výpočet s voláním AI
const response = callAzureAI({
mode: 'raw',
enteredText: managerialContractSummaryPrompt(),
selectedFiles: vars['contractCleanCopy'].getValue(), // array of files
config
});
// The assistant reply = response.reply
vars['aiSummary'].setValue(
markdownToHtml(response.reply)
);
Updated
by Anna Gernát