LLM#
Einleitung#
Das LLM-Tool von Promptflow ermöglicht Ihnen die Nutzung weit verbreiteter großer Sprachmodelle wie OpenAI, Azure OpenAI (AOAI) und Modelle im Azure AI Studio Model Catalog für die Verarbeitung natürlicher Sprache.
[!NOTE] Die vorherige Version des LLM-Tools wird nun eingestellt. Bitte aktualisieren Sie auf das neueste promptflow-tools Paket, um die neuen LLM-Tools zu nutzen.
Promptflow bietet einige verschiedene LLM-APIs
Completion: Die Completion-Modelle von OpenAI generieren Text basierend auf bereitgestellten Prompts.
Chat: Die Chat-Modelle von OpenAI erleichtern interaktive Konversationen mit textbasierten Eingaben und Antworten.
Voraussetzung#
Erstellen Sie OpenAI-Ressourcen, Azure OpenAI-Ressourcen oder MaaS-Deployments mit den LLM-Modellen (z. B.: llama2, mistral, cohere etc.) im Azure AI Studio Model Catalog
OpenAI
Account erstellen OpenAI-Website
Anmelden und persönlichen API-Schlüssel finden
Azure OpenAI (AOAI)
Azure OpenAI-Ressourcen mit Anleitung erstellen
MaaS-Deployment
Erstellen Sie ein MaaS-Deployment für Modelle im Azure AI Studio Model Catalog mit Anleitung
Sie können eine serverlose Verbindung erstellen, um dieses MaaS-Deployment zu nutzen.
Verbindungen#
Verbindungen zu bereitgestellten Ressourcen in Promptflow einrichten.
Typ |
Name |
API-SCHLÜSSEL |
API BASE |
API-Typ |
API-Version |
|---|---|---|---|---|---|
OpenAI |
Erforderlich |
Erforderlich |
- |
- |
- |
AzureOpenAI |
Erforderlich |
Erforderlich |
Erforderlich |
Erforderlich |
Erforderlich |
Serverless |
Erforderlich |
Erforderlich |
Erforderlich |
- |
- |
Eingaben#
Text Completion#
Name |
Typ |
Beschreibung |
Erforderlich |
|---|---|---|---|
prompt |
string |
Text-Prompt, den das Sprachmodell vervollständigen wird |
Ja |
model, deployment_name |
string |
das zu verwendende Sprachmodell |
Ja |
max_tokens |
integer |
die maximale Anzahl von Tokens, die in der Vervollständigung generiert werden sollen. Standard ist 16. |
Nein |
temperature |
float |
die Zufälligkeit des generierten Textes. Standard ist 1. |
Nein |
stop |
Liste |
die Stoppsequenz für den generierten Text. Standard ist null. |
Nein |
suffix |
string |
Text, der am Ende der Vervollständigung angehängt wird |
Nein |
top_p |
float |
die Wahrscheinlichkeit, die oberste Wahl aus den generierten Tokens zu verwenden. Standard ist 1. |
Nein |
logprobs |
integer |
die Anzahl der zu generierenden Log-Wahrscheinlichkeiten. Standard ist null. |
Nein |
echo |
boolean |
Wert, der angibt, ob der Prompt in der Antwort zurückgegeben werden soll. Standard ist false. |
Nein |
presence_penalty |
float |
Wert, der das Verhalten des Modells in Bezug auf die Wiederholung von Phrasen steuert. Standard ist 0. |
Nein |
frequency_penalty |
float |
Wert, der das Verhalten des Modells in Bezug auf die Generierung seltener Phrasen steuert. Standard ist 0. |
Nein |
best_of |
integer |
die Anzahl der besten Vervollständigungen, die generiert werden sollen. Standard ist 1. |
Nein |
logit_bias |
dictionary |
die Logit-Bias für das Sprachmodell. Standard ist ein leeres Dictionary. |
Nein |
Chat#
Name |
Typ |
Beschreibung |
Erforderlich |
|---|---|---|---|
prompt |
string |
Text-Prompt, auf den das Sprachmodell antworten wird |
Ja |
model, deployment_name |
string |
das zu verwendende Sprachmodell |
Ja |
max_tokens |
integer |
die maximale Anzahl von Tokens, die in der Antwort generiert werden sollen. Standard ist inf. |
Nein |
temperature |
float |
die Zufälligkeit des generierten Textes. Standard ist 1. |
Nein |
stop |
Liste |
die Stoppsequenz für den generierten Text. Standard ist null. |
Nein |
top_p |
float |
die Wahrscheinlichkeit, die oberste Wahl aus den generierten Tokens zu verwenden. Standard ist 1. |
Nein |
presence_penalty |
float |
Wert, der das Verhalten des Modells in Bezug auf die Wiederholung von Phrasen steuert. Standard ist 0. |
Nein |
frequency_penalty |
float |
Wert, der das Verhalten des Modells in Bezug auf die Generierung seltener Phrasen steuert. Standard ist 0. |
Nein |
logit_bias |
dictionary |
die Logit-Bias für das Sprachmodell. Standard ist ein leeres Dictionary. |
Nein |
tool_choice |
object |
Wert, der steuert, welches Tool vom Modell aufgerufen wird. Standard ist null. |
Nein |
tools |
Liste |
eine Liste von Tools, für die das Modell JSON-Eingaben generieren kann. Standard ist null. |
Nein |
response_format |
object |
ein Objekt, das das Format angibt, das das Modell ausgeben muss. Standard ist null. |
Nein |
Ausgaben#
Rückgabetyp |
Beschreibung |
|---|---|
string |
Der Text einer vorhergesagten Vervollständigung oder Antwort auf ein Gespräch |
Wie benutzt man das LLM-Tool?#
Einrichten und Auswählen der Verbindungen zu OpenAI-Ressourcen
Konfigurieren Sie die LLM-Modell-API und ihre Parameter
Bereiten Sie den Prompt mit Anleitungen vor.
Wie schreibt man einen Chat-Prompt?#
Um die Grundlagen der Erstellung eines Chat-Prompts zu verstehen, beginnen Sie mit diesem Abschnitt für ein einführendes Verständnis von Jinja.
Wir bieten eine Methode zur Unterscheidung zwischen verschiedenen Rollen in einem Chat-Prompt, wie z. B. „system“, „user“, „assistant“ und „tool“. Die Rollen „system“, „user“ und „assistant“ können die Eigenschaften „name“ und „content“ haben. Die Rolle „tool“ hingegen sollte die Eigenschaften „tool_call_id“ und „content“ haben. Ein Beispiel für einen Tool-Chat-Prompt finden Sie in Sample 3.
Sample 1#
# system:
You are a helpful assistant.
{% for item in chat_history %}
# user:
{{item.inputs.question}}
# assistant:
{{item.outputs.answer}}
{% endfor %}
# user:
{{question}}
Im LLM-Tool wird der Prompt so transformiert, dass er mit der OpenAI-Nachrichtenstruktur übereinstimmt, bevor er an die OpenAI-Chat-API gesendet wird.
[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "<question-of-chat-history-round-1>"
},
{
"role": "assistant",
"content": "<answer-of-chat-history-round-1>"
},
...
{
"role": "user",
"content": "<question>"
}
]
Sample 2#
# system:
{# For role naming customization, the following syntax is used #}
## name:
Alice
## content:
You are a bot can tell good jokes.
Im LLM-Tool wird der Prompt so transformiert, dass er mit der OpenAI-Nachrichtenstruktur übereinstimmt, bevor er an die OpenAI-Chat-API gesendet wird.
[
{
"role": "system",
"name": "Alice",
"content": "You are a bot can tell good jokes."
}
]
Sample 3#
Dieses Beispiel veranschaulicht, wie man einen Tool-Chat-Prompt schreibt.
# system:
You are a helpful assistant.
# user:
What is the current weather like in Boston?
# assistant:
{# The assistant message with 'tool_calls' must be followed by messages with role 'tool'. #}
## tool_calls:
{{llm_output.tool_calls}}
# tool:
{#
Messages with role 'tool' must be a response to a preceding message with 'tool_calls'.
Additionally, 'tool_call_id's should match ids of assistant message 'tool_calls'.
#}
## tool_call_id:
{{llm_output.tool_calls[0].id}}
## content:
{{tool-answer-of-last-question}}
# user:
{{question}}
Im LLM-Tool wird der Prompt so transformiert, dass er mit der OpenAI-Nachrichtenstruktur übereinstimmt, bevor er an die OpenAI-Chat-API gesendet wird.
[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "What is the current weather like in Boston?"
},
{
"role": "assistant",
"content": null,
"function_call": null,
"tool_calls": [
{
"id": "<tool-call-id-of-last-question>",
"type": "function",
"function": "<function-to-call-of-last-question>"
}
]
},
{
"role": "tool",
"tool_call_id": "<tool-call-id-of-last-question>",
"content": "<tool-answer-of-last-question>"
}
...
{
"role": "user",
"content": "<question>"
}
]