Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

BedrockSessionSaver LangGraph ライブラリを使用して会話履歴とコンテキストを保存および取得する

フォーカスモード
BedrockSessionSaver LangGraph ライブラリを使用して会話履歴とコンテキストを保存および取得する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Bedrock セッション管理 APIs を直接使用する代わりに、BedrockSessionSaverライブラリを使用して会話履歴とコンテキストを LangGraph に保存して取得できます。これは LangGraph CheckpointSaver のカスタム実装です。LangGraph ベースのインターフェイスで Amazon Bedrock APIs を使用します。詳細については、LangChain GitHub リポジトリのlanggraph-checkpoint-aws」を参照してください。

次のコードサンプルは、BedrockSessionSaver LangGraph ライブラリを使用して、ユーザーが Claude とやり取りする際の状態を追跡する方法を示しています。このコードサンプルを使用するには:

  • 必要な依存関係をインストールします。

    • boto3

    • 言語グラフ

    • langgraph-checkpoint-aws

    • langchain-core

  • アカウントで Claude 3.5 Sonnet v2 モデルにアクセスできることを確認します。または、別のモデルを使用するようにコードを変更することもできます。

  • を自分のリージョンREGIONに置き換えます。

    • ランタイムクライアントと BedrockSessionSaver のこのリージョンは一致する必要があります。

    • Claude 3.5 Sonnet v2 (または使用しているモデル) をサポートしている必要があります。

import boto3 from typing import Dict, TypedDict, Annotated, Sequence, Union from langgraph.graph import StateGraph, END from langgraph_checkpoint_aws.saver import BedrockSessionSaver from langchain_core.messages import HumanMessage, AIMessage import json # Define state structure class State(TypedDict): messages: Sequence[Union[HumanMessage, AIMessage]] current_question: str # Function to get response from Claude def get_response(messages): bedrock = boto3.client('bedrock-runtime', region_name="us-west-2") prompt = "\n".join([f"{'Human' if isinstance(m, HumanMessage) else 'Assistant'}: {m.content}" for m in messages]) response = bedrock.invoke_model( modelId="anthropic.claude-3-5-sonnet-20241022-v2:0", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1000, "messages": [ { "role": "user", "content": [ { "type": "text", "text": prompt } ] } ], "temperature": 0.7 }) ) response_body = json.loads(response['body'].read()) return response_body['content'][0]['text'] # Node function to process user question def process_question(state: State) -> Dict: messages = list(state["messages"]) messages.append(HumanMessage(content=state["current_question"])) # Get response from Claude response = get_response(messages) messages.append(AIMessage(content=response)) # Print assistant's response print("\nAssistant:", response) # Get next user input next_question = input("\nYou: ").strip() return { "messages": messages, "current_question": next_question } # Node function to check if conversation should continue def should_continue(state: State) -> bool: # Check if the last message was from the user and contains 'quit' if state["current_question"].lower() == 'quit': return False return True # Create the graph def create_graph(session_saver): # Initialize state graph workflow = StateGraph(State) # Add nodes workflow.add_node("process_question", process_question) # Add conditional edges workflow.add_conditional_edges( "process_question", should_continue, { True: "process_question", False: END } ) # Set entry point workflow.set_entry_point("process_question") return workflow.compile(session_saver) def main(): # Create a runtime client agent_run_time_client = boto3.client("bedrock-agent-runtime", region_name="REGION") # Initialize Bedrock session saver. The Region must match the Region used for the agent_run_time_client. session_saver = BedrockSessionSaver(region_name="REGION") # Create graph graph = create_graph(session_saver) # Create session session_id = agent_run_time_client.create_session()["sessionId"] print("Session started. Type 'quit' to end.") # Configure graph config = {"configurable": {"thread_id": session_id}} # Initial state state = { "messages": [], "current_question": "Hello! How can I help you today? (Type 'quit' to end)" } # Print initial greeting print(f"\nAssistant: {state['current_question']}") state["current_question"] = input("\nYou: ").strip() # Process the question through the graph graph.invoke(state, config) print("\nSession contents:") for i in graph.get_state_history(config, limit=3): print(i) if __name__ == "__main__": main()
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.