feat: organize tools and enable qwen realtime calls
This commit is contained in:
+19
-6
@@ -10,7 +10,8 @@ from __future__ import annotations
|
||||
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from pydantic.alias_generators import to_camel
|
||||
|
||||
RuntimeMode = Literal["pipeline", "realtime"]
|
||||
VisionPromptMode = Literal["fixed", "runtime", "guided"]
|
||||
@@ -42,6 +43,17 @@ class RuntimeTool(BaseModel):
|
||||
mcp_server: RuntimeMcpServer | None = None
|
||||
|
||||
|
||||
class RuntimeToolBinding(BaseModel):
|
||||
"""One assistant/stage-specific use of a reusable external tool."""
|
||||
|
||||
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
|
||||
|
||||
tool_id: str
|
||||
argument_bindings: dict = Field(default_factory=dict)
|
||||
template_bindings: dict = Field(default_factory=dict)
|
||||
result_assignments: dict[str, str] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class RuntimeModelResource(BaseModel):
|
||||
id: str
|
||||
name: str = ""
|
||||
@@ -112,13 +124,12 @@ class AssistantConfig(BaseModel):
|
||||
turnConfig: dict = Field(default_factory=dict)
|
||||
startup: dict = Field(default_factory=dict)
|
||||
analysis_config: dict = Field(default_factory=dict)
|
||||
built_in_tools: dict = Field(default_factory=dict)
|
||||
|
||||
# ``tools`` is the complete runtime pool (conversation + lifecycle actions).
|
||||
# ``llm_tool_ids`` limits which tools are advertised to a Prompt model. None
|
||||
# preserves compatibility for inline/test configs that historically exposed
|
||||
# every item in ``tools``.
|
||||
# ``tools`` is the reusable resource pool. Bindings define per-use inputs
|
||||
# and result mappings; platform built-ins are configured separately.
|
||||
tools: list[RuntimeTool] = Field(default_factory=list)
|
||||
llm_tool_ids: list[str] | None = None
|
||||
tool_bindings: list[RuntimeToolBinding] = Field(default_factory=list)
|
||||
knowledge_base_id: str | None = None
|
||||
knowledge_base_name: str = ""
|
||||
knowledge_base_description: str = ""
|
||||
@@ -168,3 +179,5 @@ class SignalingOffer(BaseModel):
|
||||
inline_config: AssistantConfig | None = None
|
||||
vision_enabled: bool = False
|
||||
dynamic_variables: dict = Field(default_factory=dict)
|
||||
client_tool_names: list[str] = Field(default_factory=list)
|
||||
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
|
||||
|
||||
Reference in New Issue
Block a user