참고소스 수정본

This commit is contained in:
LASTA_DEV01\lasta
2026-05-12 19:40:31 +09:00
parent 0f34a451fc
commit 2e9204243d
8708 changed files with 3259488 additions and 869 deletions

View File

@@ -0,0 +1,140 @@
import enum
import warnings
# Track if deprecation warning has been shown
_functions_deprecation_shown = False
class Mode(enum.Enum):
"""
Mode enumeration for patching LLM API clients.
Each mode determines how the library formats and structures requests
to different provider APIs and how it processes their responses.
"""
# OpenAI modes
FUNCTIONS = "function_call" # Deprecated
PARALLEL_TOOLS = "parallel_tool_call"
TOOLS = "tool_call"
TOOLS_STRICT = "tools_strict"
JSON = "json_mode"
JSON_O1 = "json_o1"
MD_JSON = "markdown_json_mode"
JSON_SCHEMA = "json_schema_mode"
# Add new modes to support responses api
RESPONSES_TOOLS = "responses_tools"
RESPONSES_TOOLS_WITH_INBUILT_TOOLS = "responses_tools_with_inbuilt_tools"
# XAI modes
XAI_JSON = "xai_json"
XAI_TOOLS = "xai_tools"
# Anthropic modes
ANTHROPIC_TOOLS = "anthropic_tools"
ANTHROPIC_REASONING_TOOLS = "anthropic_reasoning_tools"
ANTHROPIC_JSON = "anthropic_json"
ANTHROPIC_PARALLEL_TOOLS = "anthropic_parallel_tools"
# Mistral modes
MISTRAL_TOOLS = "mistral_tools"
MISTRAL_STRUCTURED_OUTPUTS = "mistral_structured_outputs"
# Vertex AI & Google modes
VERTEXAI_TOOLS = "vertexai_tools"
VERTEXAI_JSON = "vertexai_json"
VERTEXAI_PARALLEL_TOOLS = "vertexai_parallel_tools"
GEMINI_JSON = "gemini_json"
GEMINI_TOOLS = "gemini_tools"
GENAI_TOOLS = "genai_tools"
GENAI_STRUCTURED_OUTPUTS = "genai_structured_outputs"
# Cohere modes
COHERE_TOOLS = "cohere_tools"
COHERE_JSON_SCHEMA = "json_object"
# Cerebras modes
CEREBRAS_TOOLS = "cerebras_tools"
CEREBRAS_JSON = "cerebras_json"
# Fireworks modes
FIREWORKS_TOOLS = "fireworks_tools"
FIREWORKS_JSON = "fireworks_json"
# Other providers
WRITER_TOOLS = "writer_tools"
WRITER_JSON = "writer_json"
BEDROCK_TOOLS = "bedrock_tools"
BEDROCK_JSON = "bedrock_json"
PERPLEXITY_JSON = "perplexity_json"
OPENROUTER_STRUCTURED_OUTPUTS = "openrouter_structured_outputs"
# Classification helpers
@classmethod
def tool_modes(cls) -> set["Mode"]:
"""Returns a set of all tool-based modes."""
return {
cls.FUNCTIONS,
cls.PARALLEL_TOOLS,
cls.TOOLS,
cls.TOOLS_STRICT,
cls.ANTHROPIC_TOOLS,
cls.ANTHROPIC_REASONING_TOOLS,
cls.ANTHROPIC_PARALLEL_TOOLS,
cls.MISTRAL_TOOLS,
cls.VERTEXAI_TOOLS,
cls.VERTEXAI_PARALLEL_TOOLS,
cls.GEMINI_TOOLS,
cls.COHERE_TOOLS,
cls.CEREBRAS_TOOLS,
cls.FIREWORKS_TOOLS,
cls.WRITER_TOOLS,
cls.BEDROCK_TOOLS,
cls.OPENROUTER_STRUCTURED_OUTPUTS,
cls.MISTRAL_STRUCTURED_OUTPUTS,
cls.XAI_TOOLS,
cls.GENAI_TOOLS,
cls.RESPONSES_TOOLS,
cls.RESPONSES_TOOLS_WITH_INBUILT_TOOLS,
}
@classmethod
def json_modes(cls) -> set["Mode"]:
"""Returns a set of all JSON-based modes."""
return {
cls.JSON,
cls.JSON_O1,
cls.MD_JSON,
cls.JSON_SCHEMA,
cls.ANTHROPIC_JSON,
cls.VERTEXAI_JSON,
cls.GEMINI_JSON,
cls.COHERE_JSON_SCHEMA,
cls.CEREBRAS_JSON,
cls.FIREWORKS_JSON,
cls.WRITER_JSON,
cls.BEDROCK_JSON,
cls.PERPLEXITY_JSON,
cls.OPENROUTER_STRUCTURED_OUTPUTS,
cls.MISTRAL_STRUCTURED_OUTPUTS,
cls.XAI_JSON,
}
@classmethod
def warn_mode_functions_deprecation(cls):
"""
Warn about FUNCTIONS mode deprecation.
Shows the warning only once per session to avoid spamming logs
with the same message.
"""
global _functions_deprecation_shown
if not _functions_deprecation_shown:
warnings.warn(
"The FUNCTIONS mode is deprecated and will be removed in future versions",
DeprecationWarning,
stacklevel=2,
)
_functions_deprecation_shown = True