Download src/dynamic_tool_agent/extractor.py from hibanail/langgraph-demo: direct link, hf CLI and curl.
- Browser
- Download file 1.52 kB
-
https://huggingface.co/hibanail/langgraph-demo/resolve/main/src/dynamic_tool_agent/extractor.py
- Command line
-
hf download hf://hibanail/langgraph-demo/src/dynamic_tool_agent/extractor.py
-
curl -L -o extractor.py https://huggingface.co/hibanail/langgraph-demo/resolve/main/src/dynamic_tool_agent/extractor.py
1.52 kB
| import json | |
| from typing import Any | |
| from pydantic import BaseModel, Field | |
| from langchain_openai import ChatOpenAI | |
| from langchain_core.messages import SystemMessage | |
| from dotenv import load_dotenv | |
| from .state import AgentState, parameter_catalog | |
| load_dotenv() | |
| class ExtractedParameter(BaseModel): | |
| name: str = Field( | |
| description="Parameter name from the global catalog" | |
| ) | |
| value: str | int | float | bool | None = Field( | |
| description="Extracted parameter value" | |
| ) | |
| class ExtractionResult(BaseModel): | |
| parameters: list[ExtractedParameter] = Field( | |
| default_factory=list | |
| ) | |
| llm = ChatOpenAI(model="gpt-4o") | |
| extractor_llm = llm.with_structured_output( | |
| ExtractionResult | |
| ) | |
| def extract_parameters(state: AgentState): | |
| system_prompt = f""" | |
| You are a parameter extraction agent. | |
| Extract parameters from the user conversation. | |
| Available parameter catalog: | |
| {json.dumps(parameter_catalog)} | |
| Rules: | |
| - Only extract parameters defined in the catalog. | |
| - Use conversation context to understand references. | |
| - Do not invent missing values. | |
| - Return only new or corrected values. | |
| - Do not decide which tool to execute. | |
| """ | |
| result = extractor_llm.invoke([ | |
| SystemMessage(content=system_prompt), | |
| *state["messages"] | |
| ]) | |
| extracted = { | |
| param.name: param.value | |
| for param in result.parameters | |
| if param.name in parameter_catalog | |
| } | |
| return { | |
| "global_params": extracted | |
| } | |