Integrate posthog feature flags + setup Claude 3 experiment (#251)

This commit is contained in:
Kerem Yilmaz
2024-05-02 15:06:21 -07:00
committed by GitHub
parent 55444e3ae0
commit 4459ca7d09
6 changed files with 43 additions and 2 deletions

View File

@@ -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

View File

@@ -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()

View File

@@ -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:

View File

@@ -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

View 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