chef_agent
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user