---
title: Model AI Jev w LiteTMS: gdzie już pomaga
description: Zobacz, jak model AI Jev od TypeSafe pomaga w LiteTMS oceniać wiadomości, miejscowości i import danych. Poznaj działanie na przykładach JSON i Java.
slug: where-jev-helps-in-litetms
locale: pl
date: 2026-09-24
updated: 2026-09-25
category: technology
tags: jev, ai, transport, driver-chat, data-import
author: Zespół LiteTMS
draft: false
---

Wdrożyliśmy model Jev od [TypeSafe AI](https://typesafe.ai/blog/introducing-system-one-models-and-jev?utm_source=litetms.eu) w kilku miejscach LiteTMS. Pomaga wychwycić wiadomości kierowców wymagające reakcji, sprawdzić, czy dwie nazwy oznaczają tę samą miejscowość, podpowiedzieć układ importowanego pliku i rozpoznać, kiedy wiadomości nie trzeba tłumaczyć. To drobne oceny wykonywane w systemie do zarządzania transportem, a nie kolejny czat AI dla spedycji.

Jeśli nazwa nic Ci nie mówi, [w poprzednim artykule o Jev](/pl/blog/jev-ai-decisions-transport) wyjaśniamy, czym różni się on od AI piszącej tekst. Zamiast układać odpowiedź na dowolne pytanie, Jev ocenia konkretną sprawę, na przykład czy wiadomość wymaga działania. LiteTMS wykorzystuje tę ocenę we właściwym miejscu.

## Wiadomość od kierowcy, która wymaga reakcji

Kierowca może potwierdzić przyjazd, zapytać o instrukcje albo zgłosić awarię. Takich wiadomości nie warto wrzucać do jednego worka. W czacie kierowców dodaliśmy ocenę Jev, która rozpoznaje temat wiadomości i sprawdza, czy spedytor powinien się nią zająć. Dotyczy to tekstu oraz wiadomości głosowych po ich transkrypcji.

„Złapałem gumę” oznacza coś innego niż „Jestem na miejscu”. Wiadomość wymagająca działania może trafić do widoku spraw do obsłużenia, a problem z pojazdem może wywołać pilne powiadomienie. Pracownik nadal widzi rozmowę, odpowiada kierowcy i oznacza sprawę jako załatwioną. Jev nie odpisuje za niego ani nie decyduje, jak rozwiązać awarię.

Tak może wyglądać ocena AI dla wiadomości o przebitej oponie zapisana w JSON:

```json
{
  "input": { "driver_message": "Złapałem gumę i nie mogę jechać dalej." },
  "jev_assessment": {
    "category": "vehicle_problem",
    "needs_action_probability": 0.94
  }
}
```

LiteTMS odczytuje kategorię i ocenę potrzeby działania. Problem z pojazdem z tak wysokim wynikiem może trafić do pilnych spraw, żeby biuro mogło zareagować.

## Ta sama miejscowość, choć nazwa w dokumentach jest inna

Na dokumencie widnieje „Köln”, a w zleceniu „Cologne”. Proste porównanie tekstu uzna je za różne miejsca. Dlatego przy wczytywaniu zlecenia z pomocą AI oraz przy sprawdzaniu miejsc na dokumencie CMR dodaliśmy pytanie do Jev: czy chodzi o tę samą miejscowość?

Podczas wczytywania zlecenia taka ocena może pomóc wskazać właściwą pozycję wśród proponowanych lokalizacji. Gdy wynik jest niepewny, sprawa pozostaje do sprawdzenia. Przy kontroli CMR pewne rozpoznanie tej samej miejscowości może usunąć sygnał o *rozbieżności nazw miejsc*. Dokument odczytuje osobne narzędzie AI; Jev ocenia, czy nazwy miejscowości do siebie pasują.

Ocena dwóch nazw miejscowości może wyglądać tak:

```json
{
  "input": { "document_place": "Köln", "order_city": "Cologne" },
  "jev_assessment": { "same_city_probability": 0.92 }
}
```

Wysoki wynik zgodności może usunąć rozbieżność w nazwie miejsca. Pozostałe elementy kontroli CMR są sprawdzane osobno.

## Import danych, nawet gdy kolumny mają nietypowe nazwy

Przy przenoszeniu danych z arkusza najwięcej uwagi często wymaga ustalenie, co jest w której kolumnie. Jeden plik ma nagłówek „numer rejestracyjny”, inny „tablica”, a jeszcze inny używa własnych skrótów. LiteTMS najpierw próbuje dopasować znane nazwy według zwykłych reguł. Jeśli zostają luki, Jev może podpowiedzieć rodzaj danych i znaczenie pozostałych kolumn.

Podpowiedzi AI są oznaczone, a użytkownik może sprawdzić mapowanie przed utworzeniem rekordów. Dodaliśmy je do głównego kreatora importu oraz do importu szans sprzedaży w CRM i ładunków. Osobna ocena pomaga też rozpoznać kontrahenta, który już jest w bazie, choć w pliku jego nazwa została zapisana inaczej. Przy imporcie automatyczne powiązanie wymaga odpowiednio pewnego dopasowania, ponieważ nikt nie sprawdza obowiązkowo każdego wiersza przed zapisem.

Załóżmy, że arkusz floty ma kolumnę „Oznaczenie” z numerami rejestracyjnymi oraz „Kod wewnętrzny” z własnymi identyfikatorami pojazdów. W rozróżnieniu pomaga zawartość komórek. Jeśli zwykłe reguły nie dopasowały kolumny rejestracji, ocena może wyglądać tak:

```json
{
  "input": {
    "columns": {
      "col_0": { "header": "Oznaczenie", "examples": ["WX 4821A", "PO 7619K"] },
      "col_1": { "header": "Kod wewnętrzny", "examples": ["FLEET-17", "FLEET-42"] }
    },
    "field_to_match": "registration_number"
  },
  "jev_assessment": { "column": "col_0", "probability": 0.93 }
}
```

LiteTMS może podpowiedzieć pierwszą kolumnę jako źródło numerów rejestracyjnych. Pracownik sprawdza to przypisanie przed importem. Jeżeli żadna kolumna nie pasuje, model może wybrać „none”, czyli brak dopasowania, i zostawić wybór użytkownikowi.

## Czy tę wiadomość trzeba w ogóle tłumaczyć?

Zdarza się, że wiadomość w czacie jest już napisana w języku osoby, która ją czyta. Przed uruchomieniem pełnego tłumaczenia LiteTMS może poprosić Jev o ocenę języka. Gdy wynik jest wystarczająco pewny, wyświetla oryginał. Przy wątpliwościach system korzysta ze zwykłej ścieżki tłumaczenia, żeby czytelnik nie został bez potrzebnej pomocy.

Kierowca pisze „Jestem na miejscu, czekam na załadunek”. Jeśli odbiorca korzysta z polskiego, ocena może wyglądać tak:

```json
{
  "input": {
    "message": "Jestem na miejscu, czekam na załadunek.",
    "reader_language": "pl"
  },
  "jev_assessment": { "language": "pl", "probability": 0.96 }
}
```

Rozpoznany język zgadza się z językiem odbiorcy, więc LiteTMS może pokazać oryginał. Ta sama wiadomość dla osoby korzystającej z angielskiego nadal wymaga tłumaczenia. Przy krótkim „OK” ocena jest trudniejsza: jeśli nie da się pewnie określić języka, system korzysta ze zwykłej ścieżki tłumaczenia.

## Jak LiteTMS wykorzystuje ocenę Jev

Jev daje LiteTMS dodatkową wskazówkę, a spedycja nadal decyduje, co zrobić. Połączenia są już wdrożone i działają po włączeniu warstwy decyzji na platformie, zgodnie z ustawieniami firmy. Gdy Jev jest niedostępny, czat, kontrola dokumentów i import działają swoją zwykłą drogą.

## Od strony technicznej: TypeSafe Jev, JSON i Java

Jeśli chcesz zajrzeć pod maskę, najlepiej zacząć od pytania, które wysyła system. W [dokumentacji TypeSafe](https://docs.typesafe.ai/introduction/quickstart?utm_source=litetms.eu) zapytanie składa się z `state`, czyli danych do oceny, oraz `questions`, czyli pytań o te dane. Typ `noul` zwraca liczbę od 0 do 1 określającą prawdopodobieństwo, że dane stwierdzenie jest prawdziwe. Typ `choice` wybiera spośród nazwanych opcji. Tak pytamy o kategorię wiadomości.

Samo pytanie o potrzebę reakcji może wyglądać tak. Identyfikator modelu odpowiada konfiguracji naszej integracji z OpenRouter:

```json
{
  "model": "typesafe/jev-1.13",
  "state": {
    "driver_message": "Złapałem gumę i nie mogę jechać dalej."
  },
  "questions": {
    "needs_action": {
      "type": "noul",
      "instructions": "The dispatcher must act on driver_message today: reply, give instructions, inform the customer or arrange help. Routine updates and thanks need no action."
    }
  }
}
```

Instrukcja pyta, czy spedytor powinien dziś odpowiedzieć, przekazać wskazówki, poinformować klienta albo zorganizować pomoc. Odpowiedni fragment odpowiedzi może wyglądać tak:

```json
{
  "answers": {
    "needs_action": {
      "type": "noul",
      "noul": 0.94
    }
  }
}
```

Aplikacja odczytuje `answers.needs_action.noul` i stosuje własną regułę. W LiteTMS próg oznaczenia wiadomości kierowcy jako wymagającej uwagi wynosi `0.55`. Po odczytaniu JSON tę samą regułę można zapisać w Javie:

```java
Double probability = 0.94; // Wartość z answers.needs_action.noul
boolean needsAttention = probability != null
    && Double.isFinite(probability)
    && probability >= 0.55
    && probability <= 1.0;

if (needsAttention) {
    System.out.println("Oznacz wiadomość do sprawdzenia przez spedytora");
}
```

Kod najpierw sprawdza, czy wartość nadaje się do użycia, a następnie porównuje ją z progiem. W LiteTMS dochodzi do tego ocena kategorii: problem z pojazdem wymagający reakcji kwalifikuje się również do pilnego powiadomienia. Model ocenia treść, a aplikacja określa dalsze działanie. Przy braku odpowiedzi zwykła obsługa czatu trwa dalej.

Próg zależy od dalszego działania. Przy podpowiadaniu kolumny importu LiteTMS przyjmuje wybór z prawdopodobieństwem co najmniej `0.60`. Pominięcie tłumaczenia wymaga wskazania języka odbiorcy z wynikiem co najmniej `0.90`. Wynik `0.85` może więc wystarczyć do podpowiedzi kolumny, którą człowiek jeszcze sprawdzi, ale nie wystarczy do pominięcia tłumaczenia czatu. Każda reguła uwzględnia konsekwencje danej decyzji.

## FAQ

### Kto stworzył model AI Jev?

Jev został opracowany przez TypeSafe AI jako model System One do podejmowania ustrukturyzowanych decyzji. LiteTMS wykorzystuje go w konkretnych zadaniach, takich jak ocena wiadomości kierowców i dopasowanie nazw miejscowości.

### Do czego służy model AI Jev w LiteTMS?

Jev jest podłączony do oceny wiadomości kierowców, porównywania nazw miejscowości w zleceniach i dokumentach CMR, podpowiedzi przy imporcie danych oraz sprawdzania języka przed tłumaczeniem czatu. O działaniu funkcji na danym koncie decydują ustawienia platformy i firmy.

### Czy Jev odpowiada kierowcy albo zatwierdza dokument CMR?

Nie. Może wskazać wiadomość wymagającą uwagi i ocenić, czy dwie nazwy dotyczą tej samej miejscowości. Odpowiedź kierowcy należy do pracownika, a zgodność nazwy miejsca nie potwierdza poprawności całego CMR.

### Co się dzieje, gdy Jev nie jest pewny lub jest niedostępny?

LiteTMS korzysta ze zwykłej ścieżki działania. Niepewna ocena języka oznacza normalne tłumaczenie czatu, a niejasne podpowiedzi importu pozostają do sprawdzenia przez użytkownika.
