Добавлены параметры конфигурации
This commit is contained in:
@@ -4,6 +4,7 @@ from dotenv import load_dotenv
|
|||||||
|
|
||||||
# from pydantic import BaseModel
|
# from pydantic import BaseModel
|
||||||
from pydantic_ai import Agent
|
from pydantic_ai import Agent
|
||||||
|
from pydantic_ai.settings import ModelSettings
|
||||||
|
|
||||||
from llm.config import load_config
|
from llm.config import load_config
|
||||||
from llm.factory import LLMModelProvider
|
from llm.factory import LLMModelProvider
|
||||||
@@ -22,8 +23,16 @@ async def main():
|
|||||||
# model = LLMModelProvider.create_openai_compatible(model_name="qwen/qwen3-8b",
|
# model = LLMModelProvider.create_openai_compatible(model_name="qwen/qwen3-8b",
|
||||||
# api_key=os.getenv("API_KEY"),
|
# api_key=os.getenv("API_KEY"),
|
||||||
# base_url=os.getenv("BASE_URL"))
|
# base_url=os.getenv("BASE_URL"))
|
||||||
agent = Agent(model=model)
|
agent = Agent(model=model,
|
||||||
result = await agent.run('Привет, дай мне ответ')
|
system_prompt=config.prompts.system,
|
||||||
|
instructions=config.prompts.instructions)
|
||||||
|
settings = ModelSettings(
|
||||||
|
**config.generation.model_dump()
|
||||||
|
)
|
||||||
|
|
||||||
|
user_prompt = config.prompts.user.format(task="Повтори сообщение")
|
||||||
|
result = await agent.run(user_prompt,
|
||||||
|
model_settings=settings)
|
||||||
print(result.output)
|
print(result.output)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+20
-3
@@ -1,4 +1,21 @@
|
|||||||
llm:
|
llm:
|
||||||
provider: codex # openai, codex
|
provider: openai # openai, codex
|
||||||
model: gpt-5.6-luna
|
# model: gpt-5.6-luna
|
||||||
# model: qwen/qwen3-8b
|
model: qwen/qwen3-8b
|
||||||
|
|
||||||
|
generation:
|
||||||
|
temperature: 0.7
|
||||||
|
max_tokens: 4096
|
||||||
|
|
||||||
|
runtime:
|
||||||
|
concurrency: 1 # Колличество одновременных запросов
|
||||||
|
|
||||||
|
prompts:
|
||||||
|
instructions: |
|
||||||
|
Инструкция промпт
|
||||||
|
system: |
|
||||||
|
Системный промпт
|
||||||
|
user: |
|
||||||
|
Сформируй план выполнения следующей задачи:
|
||||||
|
|
||||||
|
{task}
|
||||||
|
|||||||
+31
-4
@@ -2,17 +2,21 @@ from pathlib import Path
|
|||||||
from typing import Annotated, Literal
|
from typing import Annotated, Literal
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
|
|
||||||
class CodexConfig(BaseModel):
|
class ConfigModel(BaseModel):
|
||||||
|
model_config = ConfigDict(extra="forbid")
|
||||||
|
|
||||||
|
# LLM
|
||||||
|
class CodexConfig(ConfigModel):
|
||||||
provider: Literal["codex"]
|
provider: Literal["codex"]
|
||||||
model: str = "gpt-5.6-luna"
|
model: str = "gpt-5.6-luna"
|
||||||
|
|
||||||
credential_path: Path | None = None
|
credential_path: Path | None = None
|
||||||
|
|
||||||
|
|
||||||
class OpenAiConfig(BaseModel):
|
class OpenAiConfig(ConfigModel):
|
||||||
provider: Literal["openai"]
|
provider: Literal["openai"]
|
||||||
model: str
|
model: str
|
||||||
|
|
||||||
@@ -25,11 +29,34 @@ LLMConfig = Annotated[
|
|||||||
Field(discriminator="provider")
|
Field(discriminator="provider")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Generation
|
||||||
|
class GenerationConfig(ConfigModel):
|
||||||
|
temperature: float = Field(default=.7,
|
||||||
|
ge=.0,
|
||||||
|
le=2.0)
|
||||||
|
max_tokens: int = Field(default=4096,
|
||||||
|
gt=0)
|
||||||
|
|
||||||
|
|
||||||
class AppConfig(BaseModel):
|
# Runtime
|
||||||
|
class RuntimeConfig(ConfigModel):
|
||||||
|
concurrency: int = Field(ge=1, default=1)
|
||||||
|
|
||||||
|
# Prompts
|
||||||
|
class PromptsConfig(ConfigModel):
|
||||||
|
instructions: str
|
||||||
|
system: str
|
||||||
|
user: str
|
||||||
|
|
||||||
|
# Application
|
||||||
|
class AppConfig(ConfigModel):
|
||||||
llm: LLMConfig
|
llm: LLMConfig
|
||||||
|
generation: GenerationConfig = GenerationConfig()
|
||||||
|
runtime: RuntimeConfig = RuntimeConfig()
|
||||||
|
prompts: PromptsConfig
|
||||||
|
|
||||||
|
|
||||||
|
# Loader
|
||||||
def load_config(path: str | Path = "config.yaml") -> AppConfig:
|
def load_config(path: str | Path = "config.yaml") -> AppConfig:
|
||||||
path = Path(path)
|
path = Path(path)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user