2024-04-22 00:44:16 -07:00
|
|
|
from typing import Awaitable, Callable
|
2024-03-19 09:12:28 -07:00
|
|
|
|
2025-04-28 09:49:44 +08:00
|
|
|
from anthropic import AsyncAnthropic, AsyncAnthropicBedrock
|
2024-04-22 00:44:16 -07:00
|
|
|
from fastapi import FastAPI
|
2025-04-11 11:18:53 -07:00
|
|
|
from openai import AsyncAzureOpenAI, AsyncOpenAI
|
2024-03-01 10:09:30 -08:00
|
|
|
|
|
|
|
|
from skyvern.forge.agent import ForgeAgent
|
2024-05-25 18:24:35 -07:00
|
|
|
from skyvern.forge.agent_functions import AgentFunction
|
2024-03-16 23:13:18 -07:00
|
|
|
from skyvern.forge.sdk.api.llm.api_handler_factory import LLMAPIHandlerFactory
|
2024-03-01 10:09:30 -08:00
|
|
|
from skyvern.forge.sdk.artifact.manager import ArtifactManager
|
|
|
|
|
from skyvern.forge.sdk.artifact.storage.factory import StorageFactory
|
2024-08-29 15:01:13 -07:00
|
|
|
from skyvern.forge.sdk.artifact.storage.s3 import S3Storage
|
2024-08-23 11:17:01 +08:00
|
|
|
from skyvern.forge.sdk.cache.factory import CacheFactory
|
2024-03-01 10:09:30 -08:00
|
|
|
from skyvern.forge.sdk.db.client import AgentDB
|
2024-05-02 15:06:21 -07:00
|
|
|
from skyvern.forge.sdk.experimentation.providers import BaseExperimentationProvider, NoOpExperimentationProvider
|
2024-12-06 17:15:11 -08:00
|
|
|
from skyvern.forge.sdk.schemas.organizations import Organization
|
2024-12-02 19:27:12 -08:00
|
|
|
from skyvern.forge.sdk.settings_manager import SettingsManager
|
2025-07-07 14:43:10 +08:00
|
|
|
from skyvern.forge.sdk.trace import TraceManager
|
|
|
|
|
from skyvern.forge.sdk.trace.lmnr import LaminarTrace
|
2024-03-12 22:28:16 -07:00
|
|
|
from skyvern.forge.sdk.workflow.context_manager import WorkflowContextManager
|
2024-03-01 10:09:30 -08:00
|
|
|
from skyvern.forge.sdk.workflow.service import WorkflowService
|
|
|
|
|
from skyvern.webeye.browser_manager import BrowserManager
|
2025-01-08 18:14:38 +01:00
|
|
|
from skyvern.webeye.persistent_sessions_manager import PersistentSessionsManager
|
2024-11-06 23:20:45 +08:00
|
|
|
from skyvern.webeye.scraper.scraper import ScrapeExcludeFunc
|
2024-03-01 10:09:30 -08:00
|
|
|
|
2024-12-02 19:27:12 -08:00
|
|
|
SETTINGS_MANAGER = SettingsManager.get_settings()
|
2024-03-01 10:09:30 -08:00
|
|
|
DATABASE = AgentDB(
|
2024-12-02 19:27:12 -08:00
|
|
|
SettingsManager.get_settings().DATABASE_STRING,
|
|
|
|
|
debug_enabled=SettingsManager.get_settings().DEBUG_MODE,
|
2024-03-01 10:09:30 -08:00
|
|
|
)
|
2024-12-02 19:27:12 -08:00
|
|
|
if SettingsManager.get_settings().SKYVERN_STORAGE_TYPE == "s3":
|
2024-08-29 15:01:13 -07:00
|
|
|
StorageFactory.set_storage(S3Storage())
|
2024-03-01 10:09:30 -08:00
|
|
|
STORAGE = StorageFactory.get_storage()
|
2024-08-23 11:17:01 +08:00
|
|
|
CACHE = CacheFactory.get_cache()
|
2024-03-01 10:09:30 -08:00
|
|
|
ARTIFACT_MANAGER = ArtifactManager()
|
|
|
|
|
BROWSER_MANAGER = BrowserManager()
|
2024-05-02 15:06:21 -07:00
|
|
|
EXPERIMENTATION_PROVIDER: BaseExperimentationProvider = NoOpExperimentationProvider()
|
2024-12-02 19:27:12 -08:00
|
|
|
LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(SettingsManager.get_settings().LLM_KEY)
|
2025-04-12 16:20:25 -07:00
|
|
|
OPENAI_CLIENT = AsyncOpenAI(api_key=SettingsManager.get_settings().OPENAI_API_KEY or "")
|
2025-04-11 11:18:53 -07:00
|
|
|
if SettingsManager.get_settings().ENABLE_AZURE_CUA:
|
|
|
|
|
OPENAI_CLIENT = AsyncAzureOpenAI(
|
|
|
|
|
api_key=SettingsManager.get_settings().AZURE_CUA_API_KEY,
|
|
|
|
|
api_version=SettingsManager.get_settings().AZURE_CUA_API_VERSION,
|
|
|
|
|
azure_endpoint=SettingsManager.get_settings().AZURE_CUA_ENDPOINT,
|
|
|
|
|
azure_deployment=SettingsManager.get_settings().AZURE_CUA_DEPLOYMENT,
|
|
|
|
|
)
|
2025-04-28 09:49:44 +08:00
|
|
|
ANTHROPIC_CLIENT = AsyncAnthropic(api_key=SettingsManager.get_settings().ANTHROPIC_API_KEY)
|
|
|
|
|
if SettingsManager.get_settings().ENABLE_BEDROCK_ANTHROPIC:
|
|
|
|
|
ANTHROPIC_CLIENT = AsyncAnthropicBedrock()
|
2025-04-11 11:18:53 -07:00
|
|
|
|
2025-06-13 01:23:39 -04:00
|
|
|
# Add UI-TARS client setup
|
|
|
|
|
UI_TARS_CLIENT = None
|
2025-06-13 21:17:32 +08:00
|
|
|
if SettingsManager.get_settings().ENABLE_VOLCENGINE:
|
2025-06-13 01:23:39 -04:00
|
|
|
UI_TARS_CLIENT = AsyncOpenAI(
|
2025-06-13 21:17:32 +08:00
|
|
|
api_key=SettingsManager.get_settings().VOLCENGINE_API_KEY,
|
|
|
|
|
base_url=SettingsManager.get_settings().VOLCENGINE_API_BASE,
|
2025-06-13 01:23:39 -04:00
|
|
|
)
|
|
|
|
|
|
2024-08-06 13:30:52 +08:00
|
|
|
SECONDARY_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
|
|
|
|
|
SETTINGS_MANAGER.SECONDARY_LLM_KEY if SETTINGS_MANAGER.SECONDARY_LLM_KEY else SETTINGS_MANAGER.LLM_KEY
|
|
|
|
|
)
|
2025-08-24 19:16:44 -07:00
|
|
|
SELECT_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
|
|
|
|
|
SETTINGS_MANAGER.SELECT_AGENT_LLM_KEY or SETTINGS_MANAGER.SECONDARY_LLM_KEY or SETTINGS_MANAGER.LLM_KEY
|
2025-02-04 19:16:39 +08:00
|
|
|
)
|
2025-08-24 19:16:44 -07:00
|
|
|
SINGLE_CLICK_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
|
|
|
|
|
SETTINGS_MANAGER.SINGLE_CLICK_AGENT_LLM_KEY or SETTINGS_MANAGER.SECONDARY_LLM_KEY or SETTINGS_MANAGER.LLM_KEY
|
2025-02-12 17:10:24 +08:00
|
|
|
)
|
2025-08-24 19:16:44 -07:00
|
|
|
SINGLE_INPUT_AGENT_LLM_API_HANDLER = LLMAPIHandlerFactory.get_llm_api_handler(
|
|
|
|
|
SETTINGS_MANAGER.SINGLE_INPUT_AGENT_LLM_KEY or SETTINGS_MANAGER.SECONDARY_LLM_KEY or SETTINGS_MANAGER.LLM_KEY
|
2025-08-16 17:48:10 -07:00
|
|
|
)
|
2025-09-16 19:05:18 -07:00
|
|
|
PARSE_SELECT_LLM_API_HANDLER = (
|
|
|
|
|
LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.PARSE_SELECT_LLM_KEY)
|
|
|
|
|
if SETTINGS_MANAGER.PARSE_SELECT_LLM_KEY
|
|
|
|
|
else SECONDARY_LLM_API_HANDLER
|
|
|
|
|
)
|
2025-08-19 21:21:05 -07:00
|
|
|
EXTRACTION_LLM_API_HANDLER = (
|
|
|
|
|
LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.EXTRACTION_LLM_KEY)
|
|
|
|
|
if SETTINGS_MANAGER.EXTRACTION_LLM_KEY
|
|
|
|
|
else LLM_API_HANDLER
|
|
|
|
|
)
|
2025-09-17 08:52:04 -07:00
|
|
|
CHECK_USER_GOAL_LLM_API_HANDLER = (
|
|
|
|
|
LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.CHECK_USER_GOAL_LLM_KEY)
|
|
|
|
|
if SETTINGS_MANAGER.CHECK_USER_GOAL_LLM_KEY
|
|
|
|
|
else SECONDARY_LLM_API_HANDLER
|
|
|
|
|
)
|
2025-09-17 17:38:02 -07:00
|
|
|
AUTO_COMPLETION_LLM_API_HANDLER = (
|
|
|
|
|
LLMAPIHandlerFactory.get_llm_api_handler(SETTINGS_MANAGER.AUTO_COMPLETION_LLM_KEY)
|
|
|
|
|
if SETTINGS_MANAGER.AUTO_COMPLETION_LLM_KEY
|
|
|
|
|
else SECONDARY_LLM_API_HANDLER
|
|
|
|
|
)
|
2025-08-22 13:54:04 +08:00
|
|
|
SVG_CSS_CONVERTER_LLM_API_HANDLER = SECONDARY_LLM_API_HANDLER if SETTINGS_MANAGER.SECONDARY_LLM_KEY else None
|
|
|
|
|
|
2024-03-12 22:28:16 -07:00
|
|
|
WORKFLOW_CONTEXT_MANAGER = WorkflowContextManager()
|
2024-03-01 10:09:30 -08:00
|
|
|
WORKFLOW_SERVICE = WorkflowService()
|
2024-05-25 18:24:35 -07:00
|
|
|
AGENT_FUNCTION = AgentFunction()
|
2025-01-08 18:14:38 +01:00
|
|
|
PERSISTENT_SESSIONS_MANAGER = PersistentSessionsManager(database=DATABASE)
|
2024-11-06 23:20:45 +08:00
|
|
|
scrape_exclude: ScrapeExcludeFunc | None = None
|
2024-04-22 00:44:16 -07:00
|
|
|
authentication_function: Callable[[str], Awaitable[Organization]] | None = None
|
2025-07-29 09:32:52 -04:00
|
|
|
authenticate_user_function: Callable[[str], Awaitable[str | None]] | None = None
|
2024-04-22 00:44:16 -07:00
|
|
|
setup_api_app: Callable[[FastAPI], None] | None = None
|
2024-03-19 09:12:28 -07:00
|
|
|
|
2024-03-01 10:09:30 -08:00
|
|
|
agent = ForgeAgent()
|
2025-07-07 14:43:10 +08:00
|
|
|
|
|
|
|
|
if SettingsManager.get_settings().TRACE_ENABLED:
|
|
|
|
|
if SettingsManager.get_settings().TRACE_PROVIDER == "lmnr":
|
|
|
|
|
TraceManager.set_trace_provider(LaminarTrace(api_key=SettingsManager.get_settings().TRACE_PROVIDER_API_KEY))
|