Integrate posthog feature flags + setup Claude 3 experiment (#251)
This commit is contained in:
@@ -69,6 +69,7 @@ class Settings(BaseSettings):
|
|||||||
ENABLE_OPENAI: bool = True
|
ENABLE_OPENAI: bool = True
|
||||||
ENABLE_ANTHROPIC: bool = False
|
ENABLE_ANTHROPIC: bool = False
|
||||||
ENABLE_AZURE: bool = False
|
ENABLE_AZURE: bool = False
|
||||||
|
ENABLE_BEDROCK: bool = False
|
||||||
# OPENAI
|
# OPENAI
|
||||||
OPENAI_API_KEY: str | None = None
|
OPENAI_API_KEY: str | None = None
|
||||||
# ANTHROPIC
|
# ANTHROPIC
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from skyvern.forge.sdk.api.llm.api_handler_factory import LLMAPIHandlerFactory
|
|||||||
from skyvern.forge.sdk.artifact.manager import ArtifactManager
|
from skyvern.forge.sdk.artifact.manager import ArtifactManager
|
||||||
from skyvern.forge.sdk.artifact.storage.factory import StorageFactory
|
from skyvern.forge.sdk.artifact.storage.factory import StorageFactory
|
||||||
from skyvern.forge.sdk.db.client import AgentDB
|
from skyvern.forge.sdk.db.client import AgentDB
|
||||||
|
from skyvern.forge.sdk.experimentation.providers import BaseExperimentationProvider, NoOpExperimentationProvider
|
||||||
from skyvern.forge.sdk.forge_log import setup_logger
|
from skyvern.forge.sdk.forge_log import setup_logger
|
||||||
from skyvern.forge.sdk.models import Organization
|
from skyvern.forge.sdk.models import Organization
|
||||||
from skyvern.forge.sdk.schemas.tasks import Task
|
from skyvern.forge.sdk.schemas.tasks import Task
|
||||||
@@ -35,6 +36,7 @@ DATABASE = AgentDB(
|
|||||||
STORAGE = StorageFactory.get_storage()
|
STORAGE = StorageFactory.get_storage()
|
||||||
ARTIFACT_MANAGER = ArtifactManager()
|
ARTIFACT_MANAGER = ArtifactManager()
|
||||||
BROWSER_MANAGER = BrowserManager()
|
BROWSER_MANAGER = BrowserManager()
|
||||||
|
EXPERIMENTATION_PROVIDER: BaseExperimentationProvider = NoOpExperimentationProvider()
|
||||||
LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(SettingsManager.get_settings().LLM_KEY)
|
LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(SettingsManager.get_settings().LLM_KEY)
|
||||||
WORKFLOW_CONTEXT_MANAGER = WorkflowContextManager()
|
WORKFLOW_CONTEXT_MANAGER = WorkflowContextManager()
|
||||||
WORKFLOW_SERVICE = WorkflowService()
|
WORKFLOW_SERVICE = WorkflowService()
|
||||||
|
|||||||
@@ -60,7 +60,29 @@ if SettingsManager.get_settings().ENABLE_OPENAI:
|
|||||||
|
|
||||||
if SettingsManager.get_settings().ENABLE_ANTHROPIC:
|
if SettingsManager.get_settings().ENABLE_ANTHROPIC:
|
||||||
LLMConfigRegistry.register_config(
|
LLMConfigRegistry.register_config(
|
||||||
"ANTHROPIC_CLAUDE3", LLMConfig("anthropic/claude-3-opus-20240229", ["ANTHROPIC_API_KEY"], True)
|
"ANTHROPIC_CLAUDE3_OPUS", LLMConfig("anthropic/claude-3-opus-20240229", ["ANTHROPIC_API_KEY"], True)
|
||||||
|
)
|
||||||
|
LLMConfigRegistry.register_config(
|
||||||
|
"ANTHROPIC_CLAUDE3_SONNET", LLMConfig("anthropic/claude-3-sonnet-20240229", ["ANTHROPIC_API_KEY"], True)
|
||||||
|
)
|
||||||
|
|
||||||
|
if SettingsManager.get_settings().ENABLE_BEDROCK:
|
||||||
|
# Supported through AWS IAM authentication
|
||||||
|
LLMConfigRegistry.register_config(
|
||||||
|
"BEDROCK_ANTHROPIC_CLAUDE3_OPUS",
|
||||||
|
LLMConfig(
|
||||||
|
"bedrock/anthropic.claude-3-opus-20240229-v1:0",
|
||||||
|
["AWS_REGION"],
|
||||||
|
True,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
LLMConfigRegistry.register_config(
|
||||||
|
"BEDROCK_ANTHROPIC_CLAUDE3_SONNET",
|
||||||
|
LLMConfig(
|
||||||
|
"bedrock/anthropic.claude-3-sonnet-20240229-v1:0",
|
||||||
|
["AWS_REGION"],
|
||||||
|
True,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
if SettingsManager.get_settings().ENABLE_AZURE:
|
if SettingsManager.get_settings().ENABLE_AZURE:
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class LLMRouterConfig(LLMConfig):
|
|||||||
"usage-based-routing-v2",
|
"usage-based-routing-v2",
|
||||||
"latency-based-routing",
|
"latency-based-routing",
|
||||||
] = "usage-based-routing"
|
] = "usage-based-routing"
|
||||||
num_retries: int = 2
|
num_retries: int = 1
|
||||||
retry_delay_seconds: int = 15
|
retry_delay_seconds: int = 15
|
||||||
set_verbose: bool = False
|
set_verbose: bool = False
|
||||||
|
|
||||||
|
|||||||
0
skyvern/forge/sdk/experimentation/__init__.py
Normal file
0
skyvern/forge/sdk/experimentation/__init__.py
Normal file
16
skyvern/forge/sdk/experimentation/providers.py
Normal file
16
skyvern/forge/sdk/experimentation/providers.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
import structlog
|
||||||
|
|
||||||
|
LOG = structlog.get_logger()
|
||||||
|
|
||||||
|
|
||||||
|
class BaseExperimentationProvider(ABC):
|
||||||
|
@abstractmethod
|
||||||
|
def is_feature_enabled(self, feature_name: str, distinct_id: str) -> bool:
|
||||||
|
"""Check if a specific feature is enabled."""
|
||||||
|
|
||||||
|
|
||||||
|
class NoOpExperimentationProvider(BaseExperimentationProvider):
|
||||||
|
def is_feature_enabled(self, feature_name: str, distinct_id: str) -> bool:
|
||||||
|
return False
|
||||||
Reference in New Issue
Block a user