Skip to Content
Mélodium 0.10.1 is now available!
DocsExemplesServeur de chat LLM

Serveur de chat LLM

Source: 01_text_llm_chat

Un serveur HTTP qui accepte des prompts en texte brut via POST /chat et renvoie la réponse du LLM token par token en streaming. La connexion au LLM est déclarée comme modèle et partagée entre toutes les requêtes concurrentes.

Exécution

melodium run 01_text_llm_chat/Compo.toml --api_key sk-... --model claude-sonnet-4-6
$ curl -X POST http://127.0.0.1:8080/chat -d "What is Mélodium?" Mélodium is a dataflow programming language…

Fonctionnement

Deux modèles sont instanciés au démarrage :

model server: HttpServer(host=|from_ipv4(|localhost_ipv4()), port=port) model llm: ChatLlm(api_key=api_key, model=model)

ChatLlm encapsule RemoteLlm avec un system prompt fixe et une limite de tokens. Le champ backend sélectionne le fournisseur ("anthropic", "openai", etc.) ; changer de fournisseur revient uniquement à modifier backend et model dans la définition du modèle — le reste du pipeline n’est pas affecté.

See in Compositeur Studio

Le sous-traitement chat

Chaque connexion entrante est traitée par le sous-traitement chat, qui est un pipeline direct en trois étapes :

Self.data -> decode.data,text -> llmStream.prompt,token -> encode.text,data -> Self.data
  • decode convertit les octets bruts de la requête en texte UTF-8
  • llmStream envoie le texte comme prompt et émet les tokens sous forme de Stream<string> à mesure qu’ils arrivent
  • encode convertit chaque token en octets et les transmet directement dans connection.data

Comme llmStream émet les tokens en flux, ils atteignent la réponse HTTP au fur et à mesure de leur production — sans tampon, sans logique asynchrone explicite.

Le texte du prompt et les erreurs LLM sont transmis indépendamment aux loggers via des connexions séparées, sans interrompre le flux de tokens.

Explication vidéo

Dépendances

[dependencies] std = "0.10.1" # flux de base, journalisation, structures de données http = "0.10.1" # serveur et client HTTP net = "0.10.1" # utilitaires d'adresses IP encoding = "0.10.1" # encodage / décodage UTF-8 ml = "0.10.1" # inférence LLM, STT, TTS et modèles locaux