init
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
from typing import Any, Optional
|
||||
|
||||
from langchain_core.runnables import RunnableConfig
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Configuration(BaseModel):
|
||||
"""The configuration for the agent."""
|
||||
|
||||
query_generator_model: str = Field(
|
||||
default="qwen-max-latest",
|
||||
metadata={
|
||||
"description": "The name of the language model to use for "
|
||||
"the agent's query generation.",
|
||||
},
|
||||
)
|
||||
query_generator_param: dict = Field(
|
||||
default={"temperature": 0.3, "stream": False},
|
||||
)
|
||||
|
||||
reflection_model: str = Field(
|
||||
default="qwen-plus-latest",
|
||||
metadata={
|
||||
"description": "The name of the language model to use for"
|
||||
" the agent's reflection.",
|
||||
},
|
||||
)
|
||||
reflection_param: dict = Field(
|
||||
default={"temperature": 0.3, "stream": False},
|
||||
)
|
||||
|
||||
answer_model: str = Field(
|
||||
default="qwen-plus-latest",
|
||||
metadata={
|
||||
"description": "The name of the language model to use "
|
||||
"for the agent's answer.",
|
||||
},
|
||||
)
|
||||
answer_param: dict = Field(default={"temperature": 0.3, "stream": False})
|
||||
|
||||
num_of_init_q: int = Field(
|
||||
default=3,
|
||||
metadata={
|
||||
"description": "The number of initial search queries to generate.",
|
||||
},
|
||||
)
|
||||
|
||||
max_research_loops: int = Field(
|
||||
default=2,
|
||||
metadata={
|
||||
"description": "The maximum number of research loops to perform.",
|
||||
},
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_runnable_config(
|
||||
cls,
|
||||
config: Optional[RunnableConfig] = None,
|
||||
) -> "Configuration":
|
||||
"""Create a Configuration instance from a RunnableConfig."""
|
||||
configurable = (
|
||||
config["configurable"]
|
||||
if config and "configurable" in config
|
||||
else {}
|
||||
)
|
||||
|
||||
# Get raw values from environment or config
|
||||
raw_values: dict[str, Any] = {
|
||||
name: os.environ.get(name.upper(), configurable.get(name))
|
||||
for name in cls.model_fields.keys()
|
||||
}
|
||||
|
||||
# Filter out None values
|
||||
values = {k: v for k, v in raw_values.items() if v is not None}
|
||||
|
||||
return cls(**values)
|
||||
Reference in New Issue
Block a user