AI zpracovani textu funguje: klic, adresa a tri skripty

Sluzba byla v katalogu bez pristupovych udaju a s appId 'ai-text', tedy
mirila na aplikaci, ktera neexistuje. Konektor nemel co vyplnit a krok nemel
co vykonat.

- sluzba stoji na api.openai.com/v1 stejne jako OpenAI, overeni GET /models
- model se bere z konektoru (ctx.config.model), ne z kazdeho kroku zvlast
- skripty ai-text.classify, ai-text.extract, ai-text.generate

Proc to neni jedna sluzba s OpenAI: tam se posila volny dotaz a vraci volny
text. Tady je uloha pevna a vystup taky - category a confidence, objekt
s popsanymi poli, text s poctem slov. Na to jde ve strome navazat podminkou,
na volny text ne.

Zjisteno u toho a zapsane do 21-realne-sluzby.md: proxy vraci na neznamou
aplikaci 200 s prazdnym telem, takze overeni konektoru u sluzby bez
verifyPath projde i tam, kde nic nebezi. Zatim neopraveno.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-08-28 07:32:18 +02:00
co-authored by Claude Opus 5
parent d71c111cf3
commit aa0a783095
6 changed files with 461 additions and 24 deletions
+57 -22
View File
@@ -18,23 +18,24 @@ aplikaci nemaji.
## Ktera sluzba stoji na cem
| Sluzba katalogu | Aplikace (`appId`) | Overeni (`verifyPath`) |
| ------------------ | ----------------------------- | ---------------------------------------------- |
| iDoklad | `idoklad` | `/account/agenda` |
| RAYNET CRM | `raynet` | `/company?limit=1` |
| CSOB (PSD2) | `csob` | `/accounts?size=1` |
| SAP Business One | `sap-bo` | `/api/system/info` |
| PPL CPL | `pplcplapi` | `/customer` |
| Microsoft 365 | `microsoft-365-service` | `/status` |
| Google Workspace | `google-service` | `/google/drive/files` |
| Google Analytics 4 | `analytics` | `/ga/admin/accountSummaries` |
| Search Console | `analytics` | `/gsc/sites` |
| Google Ads | `analytics` | `/googleads/customers:listAccessibleCustomers` |
| Sklik | `analytics` | `/sklik/limits` |
| Meta Ads | `meta` | `/ads/me/adaccounts` |
| Prepis hovoru | `audio-transcription` | nema, overi se jen dostupnost |
| E-mail | SMTP server firmy | prihlaseni na server, nic se neodesila |
| OpenAI | mimo nas, `api.openai.com/v1` | `/models` |
| Sluzba katalogu | Aplikace (`appId`) | Overeni (`verifyPath`) |
| ------------------- | ----------------------------- | ---------------------------------------------- |
| iDoklad | `idoklad` | `/account/agenda` |
| RAYNET CRM | `raynet` | `/company?limit=1` |
| CSOB (PSD2) | `csob` | `/accounts?size=1` |
| SAP Business One | `sap-bo` | `/api/system/info` |
| PPL CPL | `pplcplapi` | `/customer` |
| Microsoft 365 | `microsoft-365-service` | `/status` |
| Google Workspace | `google-service` | `/google/drive/files` |
| Google Analytics 4 | `analytics` | `/ga/admin/accountSummaries` |
| Search Console | `analytics` | `/gsc/sites` |
| Google Ads | `analytics` | `/googleads/customers:listAccessibleCustomers` |
| Sklik | `analytics` | `/sklik/limits` |
| Meta Ads | `meta` | `/ads/me/adaccounts` |
| Prepis hovoru | `audio-transcription` | nema, overi se jen dostupnost |
| E-mail | SMTP server firmy | prihlaseni na server, nic se neodesila |
| OpenAI | mimo nas, `api.openai.com/v1` | `/models` |
| AI zpracovani textu | mimo nas, `api.openai.com/v1` | `/models` |
**Ctyri sluzby na jedne aplikaci.** GA4, Search Console, Google Ads a Sklik
bezi v `analytics`, ale kazda ma **jine pristupove udaje** a jine ceny za
@@ -47,9 +48,23 @@ overene nejsou - test, ktery projde i se spatnym klicem, by lhal.
## Sluzby, ktere aplikaci zatim nemaji
E-shop, WhatsApp, Facebook Messenger, Instagram, SMS, Slack, Voicebot
a AI zpracovani textu jsou v katalogu jako popis toho, co chceme umet. Konektor
u nich zalozit jde, ale overeni skonci chybou, protoze na te adrese nic nebezi.
E-shop, WhatsApp, Facebook Messenger, Instagram, SMS a Slack jsou v katalogu
jako popis toho, co chceme umet. Konektor u nich zalozit jde, ale nic za nim
neni.
**Pozor: overeni u nich projde.** Proxy vraci na neznamou aplikaci `200`
s prazdnym telem, takze `GET /apps/<neco>/health` vypada jako zdrava sluzba
i u aplikace, ktera neexistuje:
```bash
curl -o /dev/null -w "%{http_code}" https://services.csbot.cz/apps/tohle-neexistuje-xyz/health
# 200
```
Sluzba bez `verifyPath` se overuje prave pres `/health`, takze konektor rekne
"Sluzba odpovida" i tam, kde nic nebezi. Neni to chyba overovani, je to chyba
predpokladu: 2xx od proxy neznamena, ze za ni neco je. Napravit to znamena
vyzadovat, aby `/health` neco odpovedel, ne jen vratil kod.
Meta Ads je **neco jineho nez Facebook Messenger a Instagram**: aplikace `meta`
je nad Marketing API, tedy reklamy, a je jen pro cteni. Zpravy ze stranky
@@ -130,9 +145,26 @@ server-to-server nehodi. App secret je povinny tam, kde ma aplikace zapnute
Deepgram i OpenAI klic. Obe sluzby bezi paralelne a treti volani jejich
vysledky slucuje, takze bez obou klicu to nefunguje.
### OpenAI
### OpenAI a AI zpracovani textu
Jen API klic. Zadava se **holy**, slovo `Bearer` dopise portal - viz nize.
Obe stoji na temze API a obe chteji jen API klic. Zadava se **holy**, slovo
`Bearer` dopise portal - viz nize.
Rozdil je v tom, na co se ptaji. **OpenAI** posila volny dotaz a vraci volny
text; hodi se, kdyz clovek vi, co chce napsat. **AI zpracovani textu** ma
hotove ulohy s pevnym vystupem:
| Operace | Vraci |
| -------------------- | ----------------------------------------------- |
| Zaradit do kategorie | `category`, `confidence` a jestli je ze seznamu |
| Vytahnout udaje | objekt s poli, ktera si popsal uzivatel |
| Vygenerovat text | text plus pocet slov |
Pevny vystup je ten duvod, proc to neni jedna sluzba: na `category`
a `confidence` jde ve strome navazat podminkou, na volny text ne.
Model se u teto sluzby bere z konektoru (`ctx.config.model`), aby se nemusel
vyplnovat u kazdeho kroku znovu.
## OpenAI: sluzba, ktera nebezi u nas
@@ -328,6 +360,9 @@ sluzeb: OpenAI zvladne stovky megabajtu, nas zaznam behu ne.
| `openai.ask-about-file` | otazka nad souborem pres Responses API |
| `openai.transcribe-audio` | prepis zvuku |
| `openai.list-models` | co ucet umi |
| `ai-text.classify` | zarazeni s jistotou, hlida vycet kategorii |
| `ai-text.extract` | vystup podle poli, ktera popsal uzivatel |
| `ai-text.generate` | text s omezenim delky, tonu a jazyka |
E-mail v tabulce neni schvalne: neni to skript, ale vnitrni krok, viz vyse.
+30
View File
@@ -2,6 +2,36 @@
Nejnovejsi nahore.
## 2026-08-28 - AI zpracovani textu funguje
Sluzba byla v katalogu bez pristupovych udaju a s `appId: 'ai-text'`, tedy
mirila na aplikaci, ktera neexistuje. Konektor nemel co vyplnit a krok nemel
co vykonat.
### Zmeneno
- **Sluzba ma API klic a skutecnou adresu.** Stoji na `api.openai.com/v1`
stejne jako OpenAI, overeni je `GET /models`. Model se bere z konektoru
(`ctx.config.model`), aby se nevyplnoval u kazdeho kroku znovu.
### Pridano
- **Tri skripty**: `ai-text.classify`, `ai-text.extract`, `ai-text.generate`.
Proc to neni jedna sluzba s OpenAI: tam se posila volny dotaz a vraci volny
text. Tady je uloha pevna a **vystup taky** - `category` a `confidence`,
objekt s popsanymi poli, text s poctem slov. Prave na to jde ve strome navazat
podminkou, na volny text ne.
### Zjisteno u toho
- **Overeni konektoru projde i u sluzby, ktera neexistuje.** Proxy vraci na
neznamou aplikaci `200` s prazdnym telem, a sluzba bez `verifyPath` se
overuje prave pres `/health`. Konektor tedy rekne "Sluzba odpovida" i tam,
kde nic nebezi. Tyka se to E-shopu, WhatsAppu, Facebooku, Instagramu, SMS
a Slacku. Zapsane v [21-realne-sluzby.md](21-realne-sluzby.md), zatim
neopravene.
## 2026-08-26 - jazyky, skutecny snimek v heru a opravene titulky
### Pridano