Ticket: P1.5-S3-05
Type: Feature | Est: 1.5d
Goal: ARIA runs LLM inference via Vertex AI (Gemini or Claude-on-Vertex) when deployed on GCP — no Anthropic API key or Claude Code subscription required in the container.
Scope:
implementations/llm/vertex_ai/llm_client.py (new): VertexAILLMClient implements LLMClientInterface
- Constructor:
model: str, project_id: str, location: str = "europe-west1"
- Auth via ADC (
google.auth.default()) — no credentials in constructor
complete(messages, max_tokens, temperature, system):
- Gemini models: use
google.cloud.aiplatform.gapic.PredictionServiceClient or vertexai.generative_models.GenerativeModel
- Claude-on-Vertex: use Anthropic Messages API via Vertex AI endpoint
- Raises
LLMAuthError, LLMUnavailableError, LLMResponseError matching the existing interface contract
requirements.txt: add google-cloud-aiplatform >= 1.60.0
implementations/llm/vertex_ai/__init__.py (new, empty)
Supported models: gemini-2.0-flash, gemini-2.5-pro, claude-sonnet@20250201 (Claude-on-Vertex)
Acceptance criteria:
Ticket:
P1.5-S3-05Type: Feature | Est: 1.5d
Goal: ARIA runs LLM inference via Vertex AI (Gemini or Claude-on-Vertex) when deployed on GCP — no Anthropic API key or Claude Code subscription required in the container.
Scope:
implementations/llm/vertex_ai/llm_client.py(new):VertexAILLMClientimplementsLLMClientInterfacemodel: str,project_id: str,location: str = "europe-west1"google.auth.default()) — no credentials in constructorcomplete(messages, max_tokens, temperature, system):google.cloud.aiplatform.gapic.PredictionServiceClientorvertexai.generative_models.GenerativeModelLLMAuthError,LLMUnavailableError,LLMResponseErrormatching the existing interface contractrequirements.txt: addgoogle-cloud-aiplatform >= 1.60.0implementations/llm/vertex_ai/__init__.py(new, empty)Supported models:
gemini-2.0-flash,gemini-2.5-pro,claude-sonnet@20250201(Claude-on-Vertex)Acceptance criteria:
VertexAILLMClientfully implementsLLMClientInterface(passes interface contract test intests/unit/test_interfaces.py)complete()returns a string for both Gemini and Claude-on-Vertex model identifiersaiplatformSDK; assert correct API endpoint and payload shapeLLMAuthErrorraised on ADC failure (mocked)