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?#

  1. Einrichten und Auswählen der Verbindungen zu OpenAI-Ressourcen

  2. Konfigurieren Sie die LLM-Modell-API und ihre Parameter

  3. 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>"
    }
]