| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from typing import Any, TypedDict
- import pluginlib
-
- from .common import PLUGIN_TYPE_LLM_TOOLS
-
-
- class LLMToolParameter(TypedDict):
- type: str
- description: str
- displayDescription: str
- required: bool
-
-
- class LLMToolMetadata(TypedDict):
- name: str
- displayName: str
- description: str
- displayDescription: str
- parameters: dict[str, LLMToolParameter]
-
-
- @pluginlib.Parent(PLUGIN_TYPE_LLM_TOOLS)
- class LLMToolPlugin:
- @classmethod
- @pluginlib.abstractmethod
- def get_metadata(cls) -> LLMToolMetadata:
- pass
-
- def invoke(self, **kwargs) -> str:
- raise NotImplementedError
-
-
- def llm_tool_metadata_to_openai_tool(llm_tool_metadata: LLMToolMetadata) -> dict[str, Any]:
- return {
- "type": "function",
- "function": {
- "name": llm_tool_metadata["name"],
- "description": llm_tool_metadata["description"],
- "parameters": {
- "type": "object",
- "properties": {
- k: {
- "type": p["type"],
- "description": p["description"]
- }
- for k, p in llm_tool_metadata["parameters"].items()
- },
- "required": [k for k, p in llm_tool_metadata["parameters"].items() if p["required"]]
- }
- }
- }
|