Create pydantic v1 namespace in langchain (#9254)

Create pydantic v1 namespace in langchain experimental
pull/9358/head
Eugene Yurtsev 11 months ago committed by GitHub
parent 4c2de2a7f2
commit 2673b3a314
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,24 @@
import importlib
import sys
## Create namespaces for pydantic v1 and v2.
# This code must stay at the top of the file before other modules may
# attempt to import pydantic since it adds pydantic_v1 and pydantic_v2 to sys.modules.
#
# This hack is done for the following reasons:
# * Langchain will attempt to remain compatible with both pydantic v1 and v2 since
# both dependencies and dependents may be stuck on either version of v1 or v2.
# * Creating namespaces for pydantic v1 and v2 should allow us to write code that
# unambiguously uses either v1 or v2 API.
# * This change is easier to roll out and roll back.
try:
pydantic_v1 = importlib.import_module("pydantic.v1")
except ImportError:
pydantic_v1 = importlib.import_module("pydantic")
if "pydantic_v1" not in sys.modules:
# Use a conditional because langchain experimental
# will use the same strategy to add pydantic_v1 to sys.modules
# and may run prior to langchain core package.
sys.modules["pydantic_v1"] = pydantic_v1

@ -13,7 +13,7 @@ from langchain.schema.messages import AIMessage, HumanMessage, SystemMessage
from langchain.tools.base import BaseTool from langchain.tools.base import BaseTool
from langchain.tools.human.tool import HumanInputRun from langchain.tools.human.tool import HumanInputRun
from langchain.vectorstores.base import VectorStoreRetriever from langchain.vectorstores.base import VectorStoreRetriever
from pydantic import ValidationError from pydantic_v1 import ValidationError
from langchain_experimental.autonomous_agents.autogpt.output_parser import ( from langchain_experimental.autonomous_agents.autogpt.output_parser import (
AutoGPTOutputParser, AutoGPTOutputParser,

@ -2,7 +2,7 @@ from typing import Any, Dict, List
from langchain.memory.chat_memory import BaseChatMemory, get_prompt_input_key from langchain.memory.chat_memory import BaseChatMemory, get_prompt_input_key
from langchain.vectorstores.base import VectorStoreRetriever from langchain.vectorstores.base import VectorStoreRetriever
from pydantic import Field from pydantic_v1 import Field
class AutoGPTMemory(BaseChatMemory): class AutoGPTMemory(BaseChatMemory):

@ -7,7 +7,7 @@ from langchain.prompts.chat import (
from langchain.schema.messages import BaseMessage, HumanMessage, SystemMessage from langchain.schema.messages import BaseMessage, HumanMessage, SystemMessage
from langchain.tools.base import BaseTool from langchain.tools.base import BaseTool
from langchain.vectorstores.base import VectorStoreRetriever from langchain.vectorstores.base import VectorStoreRetriever
from pydantic import BaseModel from pydantic_v1 import BaseModel
from langchain_experimental.autonomous_agents.autogpt.prompt_generator import get_prompt from langchain_experimental.autonomous_agents.autogpt.prompt_generator import get_prompt

@ -6,7 +6,7 @@ from langchain.callbacks.manager import CallbackManagerForChainRun
from langchain.chains.base import Chain from langchain.chains.base import Chain
from langchain.schema.language_model import BaseLanguageModel from langchain.schema.language_model import BaseLanguageModel
from langchain.vectorstores.base import VectorStore from langchain.vectorstores.base import VectorStore
from pydantic import BaseModel, Field from pydantic_v1 import BaseModel, Field
from langchain_experimental.autonomous_agents.baby_agi.task_creation import ( from langchain_experimental.autonomous_agents.baby_agi.task_creation import (
TaskCreationChain, TaskCreationChain,

@ -13,7 +13,7 @@ from langchain.prompts.chat import (
SystemMessagePromptTemplate, SystemMessagePromptTemplate,
) )
from langchain.tools.base import BaseTool from langchain.tools.base import BaseTool
from pydantic import BaseModel from pydantic_v1 import BaseModel
DEMONSTRATIONS = [ DEMONSTRATIONS = [
{ {

@ -6,7 +6,7 @@ from typing import Any, Optional, Union
import duckdb import duckdb
import pandas as pd import pandas as pd
from langchain.graphs.networkx_graph import NetworkxEntityGraph from langchain.graphs.networkx_graph import NetworkxEntityGraph
from pydantic import BaseModel, Field, PrivateAttr, root_validator, validator from pydantic_v1 import BaseModel, Field, PrivateAttr, root_validator, validator
from langchain_experimental.cpal.constants import Constant from langchain_experimental.cpal.constants import Constant

@ -5,7 +5,7 @@ from typing import Any, Dict, List, Optional, Tuple
from langchain.chains import LLMChain from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate from langchain.prompts import PromptTemplate
from langchain.schema.language_model import BaseLanguageModel from langchain.schema.language_model import BaseLanguageModel
from pydantic import BaseModel, Field from pydantic_v1 import BaseModel, Field
from langchain_experimental.generative_agents.memory import GenerativeAgentMemory from langchain_experimental.generative_agents.memory import GenerativeAgentMemory

@ -19,7 +19,7 @@ from langchain.schema.messages import (
BaseMessage, BaseMessage,
SystemMessage, SystemMessage,
) )
from pydantic import root_validator from pydantic_v1 import root_validator
prompt = """In addition to responding, you can use tools. \ prompt = """In addition to responding, you can use tools. \
You have access to the following tools. You have access to the following tools.

@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Any, List, Optional, cast
from langchain.callbacks.manager import CallbackManagerForLLMRun from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.llms.huggingface_pipeline import HuggingFacePipeline from langchain.llms.huggingface_pipeline import HuggingFacePipeline
from pydantic import Field, root_validator from pydantic_v1 import Field, root_validator
if TYPE_CHECKING: if TYPE_CHECKING:
import jsonformer import jsonformer

@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Any, List, Optional, cast
from langchain.callbacks.manager import CallbackManagerForLLMRun from langchain.callbacks.manager import CallbackManagerForLLMRun
from langchain.llms.huggingface_pipeline import HuggingFacePipeline from langchain.llms.huggingface_pipeline import HuggingFacePipeline
from langchain.llms.utils import enforce_stop_tokens from langchain.llms.utils import enforce_stop_tokens
from pydantic import Field, root_validator from pydantic_v1 import Field, root_validator
if TYPE_CHECKING: if TYPE_CHECKING:
import rellm import rellm

@ -15,7 +15,7 @@ from langchain.chains.base import Chain
from langchain.chains.llm import LLMChain from langchain.chains.llm import LLMChain
from langchain.schema.language_model import BaseLanguageModel from langchain.schema.language_model import BaseLanguageModel
from langchain.utilities import PythonREPL from langchain.utilities import PythonREPL
from pydantic import Extra, Field from pydantic_v1 import Extra, Field
from langchain_experimental.pal_chain.colored_object_prompt import COLORED_OBJECT_PROMPT from langchain_experimental.pal_chain.colored_object_prompt import COLORED_OBJECT_PROMPT
from langchain_experimental.pal_chain.math_prompt import MATH_PROMPT from langchain_experimental.pal_chain.math_prompt import MATH_PROMPT

@ -5,7 +5,7 @@ from langchain.callbacks.manager import (
CallbackManagerForChainRun, CallbackManagerForChainRun,
) )
from langchain.chains.base import Chain from langchain.chains.base import Chain
from pydantic import Field from pydantic_v1 import Field
from langchain_experimental.plan_and_execute.executors.base import BaseExecutor from langchain_experimental.plan_and_execute.executors.base import BaseExecutor
from langchain_experimental.plan_and_execute.planners.base import BasePlanner from langchain_experimental.plan_and_execute.planners.base import BasePlanner

@ -3,7 +3,7 @@ from typing import Any
from langchain.callbacks.manager import Callbacks from langchain.callbacks.manager import Callbacks
from langchain.chains.base import Chain from langchain.chains.base import Chain
from pydantic import BaseModel from pydantic_v1 import BaseModel
from langchain_experimental.plan_and_execute.schema import StepResponse from langchain_experimental.plan_and_execute.schema import StepResponse

@ -3,7 +3,7 @@ from typing import Any, List, Optional
from langchain.callbacks.manager import Callbacks from langchain.callbacks.manager import Callbacks
from langchain.chains.llm import LLMChain from langchain.chains.llm import LLMChain
from pydantic import BaseModel from pydantic_v1 import BaseModel
from langchain_experimental.plan_and_execute.schema import Plan, PlanOutputParser from langchain_experimental.plan_and_execute.schema import Plan, PlanOutputParser

@ -2,7 +2,7 @@ from abc import abstractmethod
from typing import List, Tuple from typing import List, Tuple
from langchain.schema import BaseOutputParser from langchain.schema import BaseOutputParser
from pydantic import BaseModel, Field from pydantic_v1 import BaseModel, Field
class Step(BaseModel): class Step(BaseModel):

@ -13,7 +13,7 @@ from langchain.prompts.chat import (
HumanMessagePromptTemplate, HumanMessagePromptTemplate,
) )
from langchain.schema import LLMResult, PromptValue from langchain.schema import LLMResult, PromptValue
from pydantic import Extra, root_validator from pydantic_v1 import Extra, root_validator
class SmartLLMChain(Chain): class SmartLLMChain(Chain):

@ -13,7 +13,7 @@ from langchain.schema import BasePromptTemplate
from langchain.schema.language_model import BaseLanguageModel from langchain.schema.language_model import BaseLanguageModel
from langchain.tools.sql_database.prompt import QUERY_CHECKER from langchain.tools.sql_database.prompt import QUERY_CHECKER
from langchain.utilities.sql_database import SQLDatabase from langchain.utilities.sql_database import SQLDatabase
from pydantic import Extra, Field, root_validator from pydantic_v1 import Extra, Field, root_validator
INTERMEDIATE_STEPS_KEY = "intermediate_steps" INTERMEDIATE_STEPS_KEY = "intermediate_steps"

@ -20,7 +20,7 @@ from langchain.callbacks.manager import (
CallbackManagerForChainRun, CallbackManagerForChainRun,
) )
from langchain.chains.base import Chain from langchain.chains.base import Chain
from pydantic import Extra from pydantic_v1 import Extra
from langchain_experimental.tot.checker import ToTChecker from langchain_experimental.tot.checker import ToTChecker
from langchain_experimental.tot.controller import ToTController from langchain_experimental.tot.controller import ToTController

@ -3,7 +3,7 @@ from __future__ import annotations
from enum import Enum from enum import Enum
from typing import Set from typing import Set
from pydantic import BaseModel, Field from pydantic_v1 import BaseModel, Field
class ThoughtValidity(Enum): class ThoughtValidity(Enum):

@ -11,7 +11,7 @@ from typing import Any, Dict, List, Tuple
from langchain.chains.llm import LLMChain from langchain.chains.llm import LLMChain
from langchain.prompts.base import BasePromptTemplate from langchain.prompts.base import BasePromptTemplate
from pydantic import Field from pydantic_v1 import Field
from langchain_experimental.tot.prompts import COT_PROMPT, PROPOSE_PROMPT from langchain_experimental.tot.prompts import COT_PROMPT, PROPOSE_PROMPT

Loading…
Cancel
Save