複数ターンの会話
会話の交代でコンテキストを維持するエージェントを作成する方法について学習します。
計算機マルチターン例
この例では、session_id
パラメータを使用して、エージェントは前の実行のコンテキストを参照し、複数の会話回転にわたってコンテキストを維持できます。
情報:エージェント実行は、定義されたルールおよび指示に基づいて1つ以上のタスクを実行するエージェントのプロセスです。会話(セッションとも呼ばれる)では、ユーザーが順番(質問やコマンドの指定など)を取るたびに、エージェント実行と呼ばれます。この実行中に、エージェントは、タスクを完了してユーザーに応答するために、いくつかのステップ(異なるツールを使用したり、複数の計算を行ったりするなど)を実行する必要がある場合があります。したがって、1人のユーザー・ターン= 1人のエージェントが実行され、最終的な回答を得るためのいくつかのステップが必要になる場合があります。
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()
例を挙げてみましょう:1。最初のターン: エージェントは、平方根を計算するための初期ユーザー問合せを処理します。2.セッションID: 最初のレスポンスの後、そのレスポンスのsession_id
が取得されます。3.第2ターン: ユーザーがdo the same thing for 81
を要求すると、エージェントはコンテキストを理解します。これは、session_id
が第2コールに渡されるためです。4.session_id
がない場合、エージェントは「同じもの」の意味を理解しません。
仕組み
session_id
パラメータを渡さないと、実行によって新しいセッションが開始されます。
session_id
パラメータを渡すと、新しいセッションを作成するのではなく、指定したセッションが再利用されます。
セッションは、セッションを開始する実行のコンテキストと、同じsession_id
を使用する実行のコンテキストを保持します。