feat(core): Upgrade pydantic to 2.x (#1428)

This commit is contained in:
Fangyin Cheng
2024-04-20 09:41:16 +08:00
committed by GitHub
parent baa1e3f9f6
commit 57be1ece18
103 changed files with 1146 additions and 534 deletions

View File

@@ -8,7 +8,7 @@ from abc import ABC, abstractmethod
from string import Formatter
from typing import Any, Callable, Dict, List, Optional, Set, Union
from dbgpt._private.pydantic import BaseModel, root_validator
from dbgpt._private.pydantic import BaseModel, ConfigDict, model_validator
from dbgpt.core.interface.message import BaseMessage, HumanMessage, SystemMessage
from dbgpt.core.interface.storage import (
InMemoryStorage,
@@ -51,6 +51,8 @@ class BasePromptTemplate(BaseModel):
class PromptTemplate(BasePromptTemplate):
"""Prompt template."""
model_config = ConfigDict(arbitrary_types_allowed=True)
template: str
"""The prompt template."""
@@ -69,11 +71,6 @@ class PromptTemplate(BasePromptTemplate):
template_define: Optional[str] = None
"""this template define"""
class Config:
"""Configuration for this pydantic object."""
arbitrary_types_allowed = True
@property
def _prompt_type(self) -> str:
"""Return the prompt type key."""
@@ -239,9 +236,12 @@ class ChatPromptTemplate(BasePromptTemplate):
raise ValueError(f"Unsupported message type: {type(message)}")
return result_messages
@root_validator(pre=True)
@model_validator(mode="before")
@classmethod
def base_pre_fill(cls, values: Dict[str, Any]) -> Dict[str, Any]:
"""Pre-fill the messages."""
if not isinstance(values, dict):
return values
input_variables = values.get("input_variables", {})
messages = values.get("messages", [])
if not input_variables: