Multiturn-Unterhaltungen

Erfahren Sie, wie Sie Agents erstellen, die kontextabhängig sind.

Rechner Multi-Turn Beispiel

In diesem Beispiel kann der Agent mithilfe des Parameters session_id auf den Kontext früherer Ausführungen zurückgreifen und den Kontext über mehrere Konversationswechsel hinweg beibehalten.


Info: Eine Agent-Ausführung ist der Prozess eines Agent, der eine oder mehrere Aufgaben basierend auf den definierten Regeln und Anweisungen ausführt. In einer Unterhaltung (auch Session genannt) wird jedes Mal, wenn ein Benutzer eine Wendung nimmt (z. B. eine Frage stellen oder einen Befehl erteilen), es als "Agent-Run" bezeichnet. Während dieser Ausführung muss der Agent möglicherweise mehrere Schritte ausführen (z. B. verschiedene Tools oder mehrere Berechnungen), um die Aufgabe abzuschließen und auf den Benutzer zu reagieren. Also, ein User Turn = ein Agent Run, der mehrere Schritte umfassen kann, um die endgültige Antwort zu erhalten.


Python

calculator_multi_turns.py

from oci.addons.adk import Agent, AgentClient
from oci.addons.adk.tool.prebuilt import CalculatorToolkit

def main():

    client = AgentClient(
        auth_type="api_key",
        profile="DEFAULT",
        region="us-chicago-1"
    )

    agent = Agent(
        client=client,
        agent_endpoint_id="ocid1.genaiagentendpoint...",
        instructions="You perform calculations using tools provided.",
        tools=[CalculatorToolkit()]
    )

    agent.setup()

    # First turn (here we start a new session)
    input = "What is the square root of 256?"
    response = agent.run(input, max_steps=3)
    response.pretty_print()

    # Second turn (here we use the same session from last run)
    input = "do the same thing for 81"
    response = agent.run(input, session_id=response.session_id, max_steps=3)
    response.pretty_print()

if __name__ == "__main__":
    main()

Java

CalculateAgentMultiTurn.java

package demos.multiTurn;

import com.oracle.bmc.ConfigFileReader;
import com.oracle.bmc.adk.agent.Agent;
import com.oracle.bmc.adk.agent.RunOptions;
import com.oracle.bmc.adk.client.AgentClient;
import com.oracle.bmc.adk.run.RunResponse;
import demos.singleTurnSingleTool.CalculateAgent.SimpleCalculatorToolkit;
import com.oracle.bmc.auth.BasicAuthenticationDetailsProvider;
import com.oracle.bmc.auth.SessionTokenAuthenticationDetailsProvider;

import java.util.Arrays;

public class CalculateAgentMultiTurn {
  public static void main(String[] args) throws Exception {
    final String configLocation = "~/.oci/config";
    final String configProfile = "DEFAULT";
    final String agentEndpointId = "ocid1.genaiagentendpoint...";

    BasicAuthenticationDetailsProvider authProvider =
            new SessionTokenAuthenticationDetailsProvider(
                    ConfigFileReader.parse(configLocation, configProfile));

    AgentClient agentClient = AgentClient.builder()
            .authProvider(authProvider)
            .region("us-chicago-1")
            .build();

    Agent agent = Agent.builder()
        .client(agentClient)
        .agentEndpointId(agentEndpointId)
        .instructions("You perform calculations using tools provided.")
        .tools(Arrays.asList(new SimpleCalculatorToolkit()))
        .build();

      agent.setup();

      // First turn (here we start a new session)
      String input = "What is the sum of 2 and 3?";
      final Integer maxStep = 3;
      RunOptions runOptions = RunOptions.builder().maxSteps(maxStep).build();
      RunResponse response = agent.run(input, runOptions);
      response.prettyPrint();

      // Second turn (here we use the same session from last run)
      input = "Do the same thing for 3 and 5.";
      runOptions.setSessionId(response.getSessionId());
      response = agent.run(input, runOptions);
      response.prettyPrint();
    }
}

Brechen wir das Beispiel auf:

  1. Erster Turn: Der Agent verarbeitet die anfängliche Benutzerabfrage zur Berechnung der Quadratwurzel.
  2. Session-ID: Nach der ersten Antwort wird die session_id aus dieser Antwort erfasst.
  3. Zweiter Schritt: Wenn der Benutzer do the same thing for 81 fragt, versteht der Agent den Kontext, weil session_id an den zweiten Aufruf übergeben wird.
  4. Ohne die session_id würde der Agent nicht verstehen, was "das Gleiche" bedeutet.

Funktionsweise

Wenn Sie den Parameter session_id nicht übergeben, startet die Ausführung eine neue Session.

Wenn Sie den Parameter session_id übergeben, verwendet die Ausführung die angegebene Session wieder, anstatt eine neue Session zu erstellen.

Eine Session verwaltet den Kontext der Ausführung, mit der die Session gestartet wird, sowie alle Ausführungen, die denselben session_id verwenden.