Skip to content

Commit

Permalink
add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
Josh-XT committed Jan 5, 2025
1 parent af76a2e commit d0a63f4
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 3 deletions.
1 change: 0 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ jobs:
id: execute_notebook
env:
API_KEY: ${{ secrets.api-key }}
features: ${{ inputs.features }}
run: |
echo "Executing notebook with strict error checking..."
Expand Down
16 changes: 16 additions & 0 deletions agixt/Models.py
Original file line number Diff line number Diff line change
Expand Up @@ -432,3 +432,19 @@ class CommandExecution(BaseModel):

class TTSInput(BaseModel):
text: str


class ProvidersResponse(BaseModel):
providers: List[str]


class ProviderSettings(BaseModel):
settings: Dict[str, Any]


class ProviderWithSettings(BaseModel):
providers: List[Dict[str, Dict[str, Any]]]


class EmbedderResponse(BaseModel):
embedders: List[str]
32 changes: 30 additions & 2 deletions agixt/endpoints/Provider.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
from typing import Dict
from fastapi import APIRouter, Depends, Header, HTTPException
from fastapi import APIRouter, Depends
from Providers import (
get_provider_options,
get_providers,
get_providers_with_settings,
get_providers_by_service,
)
from Models import (
ProvidersResponse,
ProviderSettings,
ProviderWithSettings,
EmbedderResponse,
)
from ApiClient import verify_api_key, get_api_client, is_admin
from typing import Any

app = APIRouter()


@app.get("/api/provider", tags=["Provider"], dependencies=[Depends(verify_api_key)])
@app.get(
"/api/provider",
tags=["Provider"],
dependencies=[Depends(verify_api_key)],
response_model=ProvidersResponse,
summary="Get All Available Providers",
description="Returns a list of all enabled providers in the system. These providers can be used for various services like LLM, TTS, image generation, etc.",
)
async def getproviders(user=Depends(verify_api_key)):
providers = get_providers()
return {"providers": providers}
Expand All @@ -22,6 +35,9 @@ async def getproviders(user=Depends(verify_api_key)):
"/api/provider/{provider_name}",
tags=["Provider"],
dependencies=[Depends(verify_api_key)],
response_model=ProviderSettings,
summary="Get Provider Settings",
description="Retrieves the configuration settings and options available for a specific provider. This includes default values and required parameters.",
)
async def get_provider_settings(provider_name: str, user=Depends(verify_api_key)):
settings = get_provider_options(provider_name=provider_name)
Expand All @@ -32,6 +48,9 @@ async def get_provider_settings(provider_name: str, user=Depends(verify_api_key)
"/api/providers",
tags=["Provider"],
dependencies=[Depends(verify_api_key)],
response_model=ProviderWithSettings,
summary="Get All Providers with Settings",
description="Returns a comprehensive list of all providers along with their respective configuration settings and options.",
)
async def get_all_providers(user=Depends(verify_api_key)):
providers = get_providers_with_settings()
Expand All @@ -42,6 +61,9 @@ async def get_all_providers(user=Depends(verify_api_key)):
"/api/providers/service/{service}",
tags=["Provider"],
dependencies=[Depends(verify_api_key)],
response_model=ProvidersResponse,
summary="Get Providers by Service",
description="Retrieves a list of providers that offer a specific service. Valid services include: 'llm', 'tts', 'image', 'embeddings', 'transcription', 'translation', and 'vision'.",
)
async def get_providers_by_service_name(service: str, user=Depends(verify_api_key)):
providers = get_providers_by_service(service=service)
Expand All @@ -53,6 +75,9 @@ async def get_providers_by_service_name(service: str, user=Depends(verify_api_ke
"/api/embedding_providers",
tags=["Provider"],
dependencies=[Depends(verify_api_key)],
response_model=ProvidersResponse,
summary="Get Embedding Providers",
description="Returns a list of providers that specifically offer embedding services. This endpoint is a specialized version of the service-specific provider endpoint.",
)
async def get_embed_providers(user=Depends(verify_api_key)):
providers = get_providers_by_service(service="embeddings")
Expand All @@ -64,6 +89,9 @@ async def get_embed_providers(user=Depends(verify_api_key)):
"/api/embedders",
tags=["Provider"],
dependencies=[Depends(verify_api_key)],
response_model=EmbedderResponse,
summary="Get Detailed Embedder Information",
description="Retrieves detailed information about available embedding providers, including their capabilities and requirements.",
)
async def get_embedder_info(user=Depends(verify_api_key)) -> Dict[str, Any]:
return {"embedders": get_providers_by_service(service="embeddings")}

0 comments on commit d0a63f4

Please sign in to comment.