diff --git a/requirements.txt b/requirements.txt index 4aa383bf..78e2d65f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,7 +28,7 @@ tqdm>=4.66.1 websockets>=12.0 numpy>=1.26.3 pandas~=2.1.4 -pydantic==1.10.14 +pydantic==2.6.4 httpx[brotli,http2,socks]>=0.25.2 python-multipart==0.0.9 diff --git a/server/agent/agent_factory/glm3_agent.py b/server/agent/agent_factory/glm3_agent.py index d4173e5f..2450a3a5 100644 --- a/server/agent/agent_factory/glm3_agent.py +++ b/server/agent/agent_factory/glm3_agent.py @@ -16,7 +16,7 @@ from langchain.output_parsers import OutputFixingParser from langchain.schema import AgentAction, AgentFinish, OutputParserException from langchain.schema.language_model import BaseLanguageModel from langchain.tools.base import BaseTool -from server.pydantic_types import Field, typing, model_schema +from server.pydantic_v1 import Field, typing, model_schema logger = logging.getLogger(__name__) diff --git a/server/agent/tools_factory/arxiv.py b/server/agent/tools_factory/arxiv.py index 97eae161..d3de2bb6 100644 --- a/server/agent/tools_factory/arxiv.py +++ b/server/agent/tools_factory/arxiv.py @@ -1,5 +1,5 @@ # LangChain 的 ArxivQueryRun 工具 -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field from langchain.tools.arxiv.tool import ArxivQueryRun diff --git a/server/agent/tools_factory/audio_factory/aqa.py b/server/agent/tools_factory/audio_factory/aqa.py index 337090d9..2473debd 100644 --- a/server/agent/tools_factory/audio_factory/aqa.py +++ b/server/agent/tools_factory/audio_factory/aqa.py @@ -1,6 +1,6 @@ import base64 import os -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field def save_base64_audio(base64_audio, file_path): audio_data = base64.b64decode(base64_audio) diff --git a/server/agent/tools_factory/search_internet.py b/server/agent/tools_factory/search_internet.py index 1e53644b..c85aa5f4 100644 --- a/server/agent/tools_factory/search_internet.py +++ b/server/agent/tools_factory/search_internet.py @@ -1,4 +1,4 @@ -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field from langchain.utilities.bing_search import BingSearchAPIWrapper from langchain.utilities.duckduckgo_search import DuckDuckGoSearchAPIWrapper from configs import TOOL_CONFIG diff --git a/server/agent/tools_factory/search_local_knowledgebase.py b/server/agent/tools_factory/search_local_knowledgebase.py index c3205709..1c3c1db4 100644 --- a/server/agent/tools_factory/search_local_knowledgebase.py +++ b/server/agent/tools_factory/search_local_knowledgebase.py @@ -1,5 +1,5 @@ from urllib.parse import urlencode -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field from server.knowledge_base.kb_doc_api import search_docs from configs import TOOL_CONFIG diff --git a/server/agent/tools_factory/search_youtube.py b/server/agent/tools_factory/search_youtube.py index 3b5b939e..d57c35f8 100644 --- a/server/agent/tools_factory/search_youtube.py +++ b/server/agent/tools_factory/search_youtube.py @@ -1,5 +1,5 @@ from langchain_community.tools import YouTubeSearchTool -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field def search_youtube(query: str): diff --git a/server/agent/tools_factory/shell.py b/server/agent/tools_factory/shell.py index ea902f78..34d5ae57 100644 --- a/server/agent/tools_factory/shell.py +++ b/server/agent/tools_factory/shell.py @@ -1,5 +1,5 @@ # LangChain 的 Shell 工具 -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field from langchain_community.tools import ShellTool diff --git a/server/agent/tools_factory/text2image.py b/server/agent/tools_factory/text2image.py index 5e5800b5..62568704 100644 --- a/server/agent/tools_factory/text2image.py +++ b/server/agent/tools_factory/text2image.py @@ -6,7 +6,7 @@ from typing import List import uuid from langchain.agents import tool -from server.pydantic_types import Field, FieldInfo +from server.pydantic_v1 import Field, FieldInfo import openai from configs.basic_config import MEDIA_PATH diff --git a/server/agent/tools_factory/vision_factory/vqa.py b/server/agent/tools_factory/vision_factory/vqa.py index f39aa593..926cb058 100644 --- a/server/agent/tools_factory/vision_factory/vqa.py +++ b/server/agent/tools_factory/vision_factory/vqa.py @@ -4,7 +4,7 @@ Method Use cogagent to generate response for a given image and query. import base64 from io import BytesIO from PIL import Image, ImageDraw -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field from configs import TOOL_CONFIG import re from server.agent.container import container diff --git a/server/agent/tools_factory/weather_check.py b/server/agent/tools_factory/weather_check.py index b15f90e6..b220b8a3 100644 --- a/server/agent/tools_factory/weather_check.py +++ b/server/agent/tools_factory/weather_check.py @@ -1,7 +1,7 @@ """ 简单的单参数输入工具实现,用于查询现在天气的情况 """ -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field import requests def weather(location: str, api_key: str): diff --git a/server/agent/tools_factory/wolfram.py b/server/agent/tools_factory/wolfram.py index 785d07e7..882d3883 100644 --- a/server/agent/tools_factory/wolfram.py +++ b/server/agent/tools_factory/wolfram.py @@ -1,6 +1,6 @@ # Langchain 自带的 Wolfram Alpha API 封装 from langchain.utilities.wolfram_alpha import WolframAlphaAPIWrapper -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field wolfram_alpha_appid = "your key" diff --git a/server/api_server/api_schemas.py b/server/api_server/api_schemas.py index 280f69af..8400b8ba 100644 --- a/server/api_server/api_schemas.py +++ b/server/api_server/api_schemas.py @@ -4,7 +4,7 @@ import re from typing import Dict, List, Literal, Optional, Union from fastapi import UploadFile -from server.pydantic_types import BaseModel, Field, AnyUrl, root_validator +from server.pydantic_v2 import BaseModel, Field, AnyUrl, root_validator from openai.types.chat import ( ChatCompletionMessageParam, ChatCompletionToolChoiceOptionParam, diff --git a/server/chat/utils.py b/server/chat/utils.py index 87d61559..89a7762b 100644 --- a/server/chat/utils.py +++ b/server/chat/utils.py @@ -1,5 +1,5 @@ from functools import lru_cache -from server.pydantic_types import BaseModel, Field +from server.pydantic_v1 import BaseModel, Field from langchain.prompts.chat import ChatMessagePromptTemplate from configs import logger, log_verbose from typing import List, Tuple, Dict, Union diff --git a/server/pydantic_types.py b/server/pydantic_types.py deleted file mode 100644 index af532414..00000000 --- a/server/pydantic_types.py +++ /dev/null @@ -1,8 +0,0 @@ -from langchain_core.pydantic_v1 import * -from pydantic.fields import FieldInfo -from pydantic.schema import model_schema -from pydantic.typing import typing - -# from pydantic.v1 import * -# from pydantic.v1.fields import FieldInfo -# from pydantic.v1.schema import model_schema diff --git a/server/pydantic_v1.py b/server/pydantic_v1.py new file mode 100644 index 00000000..2a710a3a --- /dev/null +++ b/server/pydantic_v1.py @@ -0,0 +1,4 @@ +from langchain_core.pydantic_v1 import * +from pydantic.v1.fields import FieldInfo +from pydantic.v1.schema import model_schema +from pydantic.v1.typing import typing diff --git a/server/pydantic_v2.py b/server/pydantic_v2.py new file mode 100644 index 00000000..6ced351c --- /dev/null +++ b/server/pydantic_v2.py @@ -0,0 +1,3 @@ +from pydantic import * +from pydantic.fields import FieldInfo +from pydantic import typing diff --git a/server/utils.py b/server/utils.py index ae6fce06..d4490d0c 100644 --- a/server/utils.py +++ b/server/utils.py @@ -27,7 +27,7 @@ import logging from configs import (logger, log_verbose, HTTPX_DEFAULT_TIMEOUT, DEFAULT_LLM_MODEL, DEFAULT_EMBEDDING_MODEL, TEMPERATURE) -from server.pydantic_types import BaseModel, Field +from server.pydantic_v2 import BaseModel, Field from server.minx_chat_openai import MinxChatOpenAI # TODO: still used?