참고소스 수정본
This commit is contained in:
140
참고/instructor-main/instructor/mode.py
Normal file
140
참고/instructor-main/instructor/mode.py
Normal 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
|
||||
Reference in New Issue
Block a user