chef_agent

This commit is contained in:
2026-09-07 13:24:09 +08:00
parent 86ece1926d
commit bc44de93bc
14 changed files with 133 additions and 63 deletions

View File

@@ -1,8 +1,8 @@
from __future__ import annotations
import logging
from typing import Any, cast
import structlog
from langchain.agents import create_agent
from langchain.agents.middleware import SummarizationMiddleware
from langchain.agents.middleware.summarization import ContextMessages
@@ -14,8 +14,10 @@ from psycopg import Connection
from psycopg_pool import ConnectionPool
from core.config.settings import settings
from exceptions.errors import AgentNotReadyError
logger = structlog.getLogger(__name__)
logger = logging.getLogger(__name__)
class ChefAgent:
"""厨师 Agent。
@@ -30,7 +32,7 @@ class ChefAgent:
"""
def __init__(self) -> None:
self._pool: ConnectionPool[Connection[Any]] | None = None
self._pool = None
self._checkpointer: PostgresSaver | None = None
self._agent = None
@@ -81,7 +83,8 @@ class ChefAgent:
llm = init_chat_model(
model="deepseek-v4-flash",
api_key=settings.DEEPSEEK_API_KEY,
model_provider="deepseek",
api_key=settings.DEEPSEEK_API_KEY
)
logger.info("chef_agent的llm初始化完成")
@@ -122,16 +125,16 @@ class ChefAgent:
logger.info("chef_agent的CheckPointer开始初始化")
logger.info("创建PostgreSQL连接池")
self.pool: ConnectionPool[Connection[Any]] = ConnectionPool(
self._pool = ConnectionPool[Connection[dict[str, Any]]]( # 指定类型[Connection[dict[str, Any]]]防止编译器提示错误
conninfo=settings.postgres_url,
max_size=10,
kwargs={
"autocommit": True,
},
}
)
logger.info("创建checkpointer")
checkpointer = PostgresSaver(self.pool)
checkpointer = PostgresSaver(self._pool)
logger.info("初始化checkpoint数据表")
# 创建 LangGraph checkpoint 所需的数据表
@@ -223,7 +226,8 @@ class ChefAgent:
"""获取 Agent。"""
if self._agent is None:
raise RuntimeError(
logger.info("ChefAgent 尚未初始化,请先调用 initialize()")
raise AgentNotReadyError(
"ChefAgent 尚未初始化,请先调用 initialize()"
)
@@ -235,6 +239,7 @@ class ChefAgent:
if self._pool is not None:
self._pool.close()
self._pool = None
logger.info("PostgreSQL已关闭")
self._checkpointer = None
self._agent = None