
6
)
from langchain_core.messages import BaseMessage, HumanMessage, AIMessage
from langchain_core.tools import tool
from pydantic import BaseModel, Field
from langgraph.graph import END, StateGraph
from langgraph.prebuilt import ToolNode
ここでは、LangGraph
や
LangChainの他に、
subprocess
モジュールや
jsonschema
モジュー
ルなどをインポートしています。
subprocess
モジュールは外部プロセスを実行するために、
jsonschema
モジュールはJSON データのバリデーション(検証)のために使用します。なお、
ToolNode
はLangGraph の事前定義済みノードの一つで、ツールを呼び出すためのノードです。
6.4.1では
tool_node
を自分で定義していましたが、ここでは同等機能を持つ
ToolNode
を使い
ます。
ツールの定義
次に、コードとテストを評価するためのツールを定義します。
# ツール定義
@tool
def evaluate(code: str, test: str) -> tuple[str, str]:
"""
コードをテストし、標準出力と標準エラーのペアを返す。
code: テスト対象のコード
test: pytestのテストコード ...