Copyright ©
Mindbreeze GmbH, A-4020 Linz, 13.09.2024.
Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen und/oder Marken der jeweiligen Hersteller.
Diese Unterlagen sind streng vertraulich. Durch die Übermittlung und Präsentation dieser Unterlagen alleine werden keine Rechte an unserer Software, an unseren Dienstleistungen und Dienstleistungsresultaten oder sonstigen geschützten Rechten begründet.
Die Weitergabe, Veröffentlichung oder Vervielfältigung ist nicht gestattet.
Aus Gründen der einfacheren Lesbarkeit wird auf die geschlechtsspezifische Differenzierung, z.B. Benutzer/-innen, verzichtet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für beide Geschlechter.
Dieses Dokument beschäftigt sich mit der Mindbreeze Web API zum Generieren von Chat- Completions mittels RAG Pipelines.
Generate-Anfragen werden als HTTP POST-Request an ein Client Service gesendet. Der Pfad für Generate-Anfragen lautet:
<Client Service>/api/chat/v1beta/generate
Im Body des HTTP-Request wird ein JSON-Dokument mitgeschickt, das die Generate-Anfrage beschreibt. Wie dieses JSON-Dokument auszusehen hat, wird im Kapitel "Felder Im Request" beschrieben.
Als Response erhält man ebenfalls Server Sent Events (Stream). Das Format wird im Kapitel "Felder in der Response" beschrieben.
Eine OpenAPI Spezifikation der API ist ebenfalls verfügbar. Eine genauere Anleitung dazu befindet sich in der Dokumentation OpenAPI Schnittstellenbeschreibung .
id | Kennung der Konversation (optional). Die ID wird in der app.telemetry angezeigt. Type: String |
inputs | Eingabetext für die Generate-Anfrage. Type: String |
stream | Steuert, ob die Generierung gestreamed wird. Standardwert: true Type: Boolean |
model_id | ID der zu verwendenden RAG Pipeline. Type: String |
messages | Konversationsverlauf (optional). Siehe das Kapitel messages [liste]. |
parameters | Generierungsparameter (optional). Siehe das Kapitel parameters. |
prompt_dictionary | Zusätzliche Werte der Promptvorlage (optional). Siehe das Kapitel prompt_dictionary. |
retrieval_options | Zusätzliche Einschränkungen der Suche (optional). Siehe das Kapitel retrieval_options. |
{
"inputs": "Who is the CEO of Mindbreeze?",
"model_id": "3a0e8612-a24f-4b16-93cc-aa6307d0c62b",
"retrieval_options": {
"constraint": {
"unparsed": "title:management"
}
}
}
Die API ist stateless. Um den Generate Endpoint für Chat- Anwendungen zu verwenden, kann optional eine Chat- Verlauf als Liste von Messages angegeben werden. Dazu muss auch die Option „Chat History verwenden“ in der Pipeline aktiviert sein.
from | Absender der Message („user“ oder „assistant“). Type: String |
id | Kennung der Message (optional). Type: String |
content | Textinhalt der Message. Type: String |
content_processed | Ausgefüllte Promptvorlage mit Suchergebnissen (optional). Type: String |
[
{
"from": "user",
"content": "Who is the CEO of Mindbreeze?",
"content_processed": "Given the following extracted parts of …"
},
{
"from": assistant",
"content": "Daniel Fallmann is the CEO of Mindbreeze"
}
]
Optional können die Generation-Parameter der verwendeten Pipeline überschrieben werden.
temperature | Überschreibt „Zufälligkeit der Antwort (Temperatur)“ Steuert die Zufälligkeit der generierten Antwort (0 - 100%). Höhere Werte machen die Ausgabe kreativer, während niedrigere Werte sie zielgerichteter und deterministischer machen. Type: Integer |
max_new_tokens | Überschreibt „Maximale Länge der Antwort (Tokens)“ Begrenzt die Menge der erzeugten Tokens (100 Token ~ 75 Wörter; abhängig vom Tokenizer). |
details | Fügt der Antwort zusätzlich zum generierten Text noch detailliertere Informationen über die einzelnen Token hinzu. Type: Boolean Hinweis: Ist nur relevant, wenn es nicht gestreamed wird. |
retrieval_details | Fügt der Antwort zusätzlich noch detaillierte Informationen über die erhaltenen Antworten aus dem Retrieval Prozess hinzu. Type: Boolean |
{
"temperature": 5,
"max_new_tokens": 500,
"retrieval_details": true
}
Optional können zum Ausfüllen von Platzhaltern in der Prompt Template der verwendeten Pipeline Key- Value Paare angegeben werden. Um Default Platzhalter zu überschreiben, muss die Einstellung „Überschreiben von Systemprompttemplatevariablen zulassen“ in der Pipeline aktiviert sein.
"prompt_dictionary": {
"question": "Tell me about Mindbreeze",
"answer": "Mindbreeze is fast!"
}
Optional können die Retrieval-Einstellungen der verwendeten Pipeline überschrieben werden.
constraint | Query Expression, die zusätzlich zu der in der Pipeline konfigurierten Sucheinschränkung für das Retrieval verwendet wird. Type: String |
search_request | Erweitert die Suchanfrage, die für das Retrieval verwendet wird. Felder dich nicht in der Suchanfrage der Pipeline vorhanden sind, werden ergänzt, um das Überschreiben von Feldern zu erlauben, muss die Einstellung „Überschreiben der Suchanfragenvorlage erlauben“ in der Pipeline aktiviert sein. Type: String |
use_inputs | Steuert, ob der Eingabetext (inputs) als Query für das Retrieval verwendet wird. Standardwert: true Type: Boolean |
"retrieval_options": {
"constraint": {
"unparsed": "title:management"
},
"search_request": {
"term": "mind"
},
}
Die Struktur ist abhängig vom Feld „stream“ im Request.
stream (Request) | Response Struktur |
true (Default) | TokenStreamEvent |
false | GeneratTextResponse |
Beim Streaming enthält nur das letzte TokenStreamEvent den kompletten generierten Text.
data: {"token": {"text": "Daniel", "logprob": -0.055236816, "id": 4173}}
data: {"token": {"text": " ", "logprob": -0.0005774498, "id": 32106}}
data: {"token": {"text": "Fall", "logprob": -7.176399e-05, "id": 2589}}
…
"data": {
"token":{
"text":"</s>",
"logprob":-0.22509766,
"id":1,
"special":true
},
"generated_text":"Daniel Fallmann is the CEO of Mindbreeze.\n\nRetrieved Sources: …",
"details":{
"finish_reason":"eos_token",
"generated_tokens":19.0,
"seed":null
},
"content_processed":"Given the following …"
}
Enthält Informationen zum generierten Token
text | Textinhalt des Tokens. Type: String |
logprob | Logarithmische Wahrscheinlichkeit des Tokens. Type: Float ]-inf,0] |
id | Kennung des Tokens in Bezug auf seinen Kontext Type: Integer |
special | Token hat spezielle Bedeutung (e.g. End-of-Sequence). Type: Boolean |
"token": {
"text": "mind",
"logprob": -0.0029792786,
"id": 1,
"special": false
}
Der komplette generierte Text, also alle gestreamten Tokens, ausgenommen Special Tokens.
"generated_text": "The CEO of Mindbreeze is…",
finish_reason | Grund für den Abschluss der Token-Generierung (z.B. "eos_token"). Type: String |
generated_tokens | Anzahl der generierten Tokens. Type: Float |
seed | Bei der Generierung verwendeter Seed. Type: String | null |
"details": {
"finish_reason": "eos_token",
"generated_tokens": 51.0,
"seed": null
}
Enthält den Text, der als Eingabe zur Generierung an das LLM gesendet wurde (Prompt). Der Text wird anhand der Prompt Template der Verwendeten Pipeline erzeugt.
"content_processed": "Given the following extracted parts of …"
Ohne Streaming wird der generierte Text, ohne zusätzlich Informationen wie beim Streaming zurückgeliefert.
"generated_text": "Daniel Fallmann is the CEO…",
"details": {
"generated_tokens": 19,
"tokens": [
{
"text": "Daniel",
"logprob": -0.055236816
},
{
"text": " ",
"logprob": -0.0005774498
},
{
"text": "Fall",
"logprob": -7.176399e-05
},
…
{
"text": "</s>",
"logprob": -0.22509766,
"special":true
}
]
}
}
Der komplette generierte Text, also alle gestreamten Tokens, ausgenommen Special Tokens.
"generated_text": "The CEO of Mindbreeze is…",
Enthält Informationen zum generierten Text. Nur präsent, wenn der Parameter "details" mit "true" im Request mitgeschickt wurde.
generated_tokens | Anzahl der generierten Tokens. Type: Integer |
tokens | Die generierten Tokens Type: Array[Token] |
Enthält Informationen zum generierten Token
text | Textinhalt des Tokens. Type: String |
logprob | Logarithmische Wahrscheinlichkeit des Tokens. Type: Float ]-inf,0] |