# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class LlmAdapter(str, enum.Enum):
    ANTHROPIC = "anthropic"
    OPEN_AI = "openai"
    AZURE = "azure"
    BEDROCK = "bedrock"
    GOOGLE_VERTEX_AI = "google-vertex-ai"
    GOOGLE_AI_STUDIO = "google-ai-studio"

    def visit(
        self,
        anthropic: typing.Callable[[], T_Result],
        open_ai: typing.Callable[[], T_Result],
        azure: typing.Callable[[], T_Result],
        bedrock: typing.Callable[[], T_Result],
        google_vertex_ai: typing.Callable[[], T_Result],
        google_ai_studio: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is LlmAdapter.ANTHROPIC:
            return anthropic()
        if self is LlmAdapter.OPEN_AI:
            return open_ai()
        if self is LlmAdapter.AZURE:
            return azure()
        if self is LlmAdapter.BEDROCK:
            return bedrock()
        if self is LlmAdapter.GOOGLE_VERTEX_AI:
            return google_vertex_ai()
        if self is LlmAdapter.GOOGLE_AI_STUDIO:
            return google_ai_studio()
