Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/ee/src/services/commoners.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ async def create_accounts(payload: dict):
# Prepare payload to create organization
create_org_payload = CreateOrganization(
name=user_dict["username"],
description="My Default Organization",
description="Default Organization",
owner=str(user.id),
type="default",
)
Expand Down
4 changes: 2 additions & 2 deletions api/ee/src/services/db_manager_ee.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ async def create_default_project(
"""

project_db = await create_project(
"Default",
"Default Project",
workspace_id=workspace_id,
organization_id=organization_id,
session=session,
Expand Down Expand Up @@ -836,7 +836,7 @@ async def create_organization(
name=payload.name,
type=payload.type if payload.type else "",
description=(
"My Default Workspace"
"Default Workspace"
if payload.type == "default"
else payload.description
if payload.description
Expand Down
1 change: 0 additions & 1 deletion api/oss/src/core/services/v0.py
Original file line number Diff line number Diff line change
Expand Up @@ -518,7 +518,6 @@ async def auto_custom_code_run_v0(
)
except Exception as e:
raise CustomCodeServerV0Error(
code=500,
message=str(e),
stacktrace=traceback.format_exc(),
) from e
Expand Down
2 changes: 1 addition & 1 deletion api/oss/src/services/admin_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ async def legacy_create_organization(
name=payload.name,
type=payload.type if payload.type else "",
description=(
"My Default Workspace"
"Default Workspace"
if payload.type == "default"
else payload.description
if payload.description
Expand Down
2 changes: 1 addition & 1 deletion api/oss/src/services/db_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -1214,7 +1214,7 @@ async def create_workspace(name: str, organization_id: str):
workspace_db = WorkspaceDB(
name=name,
organization_id=uuid.UUID(organization_id),
description="My Default Workspace",
description="Default Workspace",
type="default",
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@ async def get_second_user_object():
async def get_or_create_project_from_db():
async with engine.core_session() as session:
result = await session.execute(
select(ProjectDB).filter_by(project_name="default", is_default=True)
select(ProjectDB).filter_by(project_name="Default Project", is_default=True)
)
project = result.scalars().first()
if project is None:
create_project = ProjectDB(project_name="default", is_default=True)
create_project = ProjectDB(project_name="Default Project", is_default=True)
session.add(create_project)
await session.commit()
await session.refresh(create_project)
Expand Down
2 changes: 1 addition & 1 deletion api/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "api"
version = "0.59.7"
version = "0.59.8"
description = "Agenta API"
authors = [
{ name = "Mahmoud Mabrouk", email = "[email protected]" },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ You can integrate self-hosted models into Agenta by adding custom providers such

- [Azure OpenAI](#configuring-azure-openai)
- [AWS Bedrock](#configuring-aws-bedrock)
- [Vertex AI](#configuring-vertex-ai)
- [OpenAI-compatible endpoints](#configuring-openai-compatible-endpoints-eg-ollama) (including self-hosted models, OpenAI finetuned models, [Ollama](#configuring-openai-compatible-endpoints-eg-ollama), etc.)


Expand Down
59 changes: 38 additions & 21 deletions sdk/agenta/sdk/managers/secrets.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,11 +119,16 @@ def _get_compatible_model(*, model: str, provider_slug: str):
# The reason is that custom providers are in fact openai compatible providers
# They need to be passed in litellm as openai/modelname

if "custom" in model:
modified_model = model.replace(f"{provider_slug}/custom/", "openai/")
return modified_model.replace(f"{provider_slug}/", "")
modified_model = model

return model.replace(f"{provider_slug}/", "")
if "custom" in modified_model:
modified_model = modified_model.replace(
f"{provider_slug}/custom/", "openai/"
)

modified_model = modified_model.replace(f"{provider_slug}/", "")

return modified_model

@staticmethod
def get_provider_settings(model: str) -> Optional[Dict]:
Expand All @@ -137,6 +142,8 @@ def get_provider_settings(model: str) -> Optional[Dict]:
Dict: A dictionary containing all parameters needed for litellm.completion
"""

request_provider_model = model

# STEP 1: get vault secrets from route context and transform it
secrets = SecretsManager.get_from_route()
if not secrets:
Expand All @@ -146,11 +153,11 @@ def get_provider_settings(model: str) -> Optional[Dict]:
secrets = SecretsManager._parse_secrets(secrets=secrets)

# STEP 2: check model exists in supported standard models
provider = _standard_providers.get(model)
provider = _standard_providers.get(request_provider_model)
if not provider:
# check and get provider kind if model exists in custom provider models
provider = SecretsManager._custom_providers_get(
model=model,
model=request_provider_model,
secrets=secrets,
)

Expand All @@ -159,16 +166,19 @@ def get_provider_settings(model: str) -> Optional[Dict]:
return None

# STEP 2c: get litellm compatible model
provider_slug = SecretsManager._custom_provider_slug_get(
model=model, secrets=secrets
request_provider_slug = (
SecretsManager._custom_provider_slug_get(
model=request_provider_model, secrets=secrets
)
or ""
)
model = SecretsManager._get_compatible_model(
model=model, provider_slug=provider_slug
compatible_provider_model = SecretsManager._get_compatible_model(
model=request_provider_model, provider_slug=request_provider_slug
)

# STEP 3: initialize provider settings and simplify provider name
provider_settings = {"model": model}
provider_name = re.sub(
provider_settings = dict(model=compatible_provider_model)
request_provider_kind = re.sub(
r"[\s-]+", "", provider.lower()
) # normalizing other special characters too (azure-openai)

Expand All @@ -180,23 +190,30 @@ def get_provider_settings(model: str) -> Optional[Dict]:
# i). Extract API key if present
# (for standard models -- openai/anthropic/gemini, etc)
if secret.get("kind") == "provider_key":
provider_kind = secret_data.get("kind", "")
secret_provider_kind = secret_data.get("kind", "")

if provider_kind == provider_name:
if request_provider_kind == secret_provider_kind:
if "key" in provider_info:
provider_settings["api_key"] = provider_info["key"]
continue

# ii). Extract Credentials if present
# (for custom providers -- aws bedrock/sagemaker, vertex_ai, etc)
elif secret.get("kind") == "custom_provider":
provider_kind = provider_info.get("kind", "").lower().replace(" ", "")
provider_slug = secret_data.get("provider_slug", "")
provider_extras = provider_info.get("extras", {})

if provider_kind == provider_name or provider_slug == provider_name:
if provider_extras:
provider_settings.update(provider_extras)
secret_provider_kind = (
provider_info.get("kind", "").lower().replace(" ", "")
)
secret_provider_slug = secret_data.get("provider_slug", "")
secret_provider_models = secret_data.get("models", "")
secret_provider_extras = provider_info.get("extras", {})

if (
request_provider_kind == secret_provider_kind
and request_provider_slug == secret_provider_slug
and request_provider_model in secret_provider_models
):
if secret_provider_extras:
provider_settings.update(secret_provider_extras)
continue

return provider_settings
2 changes: 1 addition & 1 deletion sdk/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "agenta"
version = "0.59.7"
version = "0.59.8"
description = "The SDK for agenta is an open-source LLMOps platform."
readme = "README.md"
authors = [
Expand Down
2 changes: 1 addition & 1 deletion web/ee/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@agenta/ee",
"version": "0.59.7",
"version": "0.59.8",
"private": true,
"engines": {
"node": ">=18"
Expand Down
Loading