-
Notifications
You must be signed in to change notification settings - Fork 2.8k
/
openapi_function_execution_parameters.py
39 lines (28 loc) · 1.33 KB
/
openapi_function_execution_parameters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Copyright (c) Microsoft. All rights reserved.
from __future__ import annotations
from typing import Any, Awaitable, Callable, List
from urllib.parse import urlparse
import httpx
from pydantic import Field
from semantic_kernel.kernel_pydantic import KernelBaseModel
from semantic_kernel.utils.experimental_decorator import experimental_class
AuthCallbackType = Callable[..., Awaitable[Any]]
@experimental_class
class OpenAPIFunctionExecutionParameters(KernelBaseModel):
"""OpenAPI function execution parameters."""
http_client: httpx.AsyncClient | None = None
auth_callback: AuthCallbackType | None = None
server_url_override: str | None = None
ignore_non_compliant_errors: bool = False
user_agent: str | None = None
enable_dynamic_payload: bool = True
enable_payload_namespacing: bool = False
operations_to_exclude: List[str] = Field(default_factory=list)
def model_post_init(self, __context: Any) -> None:
from semantic_kernel.connectors.telemetry import HTTP_USER_AGENT
if self.server_url_override:
parsed_url = urlparse(self.server_url_override)
if not parsed_url.scheme or not parsed_url.netloc:
raise ValueError(f"Invalid server_url_override: {self.server_url_override}")
if not self.user_agent:
self.user_agent = HTTP_USER_AGENT