Azure AI Projects SDK for Java
High-level SDK for Azure AI Foundry project management with access to connections, datasets, indexes, and evaluations.
Installation
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-projects</artifactId> <version>1.0.0-beta.1</version> </dependency>
Environment Variables
PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>
Authentication
import com.azure.ai.projects.AIProjectClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder;
AIProjectClientBuilder builder = new AIProjectClientBuilder() .endpoint(System.getenv("PROJECT_ENDPOINT")) .credential(new DefaultAzureCredentialBuilder().build());
Client Hierarchy
The SDK provides multiple sub-clients for different operations:
Client Purpose
ConnectionsClient
Enumerate connected Azure resources
DatasetsClient
Upload documents and manage datasets
DeploymentsClient
Enumerate AI model deployments
IndexesClient
Create and manage search indexes
EvaluationsClient
Run AI model evaluations
EvaluatorsClient
Manage evaluator configurations
SchedulesClient
Manage scheduled operations
// Build sub-clients from builder ConnectionsClient connectionsClient = builder.buildConnectionsClient(); DatasetsClient datasetsClient = builder.buildDatasetsClient(); DeploymentsClient deploymentsClient = builder.buildDeploymentsClient(); IndexesClient indexesClient = builder.buildIndexesClient(); EvaluationsClient evaluationsClient = builder.buildEvaluationsClient();
Core Operations
List Connections
import com.azure.ai.projects.models.Connection; import com.azure.core.http.rest.PagedIterable;
PagedIterable<Connection> connections = connectionsClient.listConnections(); for (Connection connection : connections) { System.out.println("Name: " + connection.getName()); System.out.println("Type: " + connection.getType()); System.out.println("Credential Type: " + connection.getCredentials().getType()); }
List Indexes
indexesClient.listLatest().forEach(index -> { System.out.println("Index name: " + index.getName()); System.out.println("Version: " + index.getVersion()); System.out.println("Description: " + index.getDescription()); });
Create or Update Index
import com.azure.ai.projects.models.AzureAISearchIndex; import com.azure.ai.projects.models.Index;
String indexName = "my-index"; String indexVersion = "1.0"; String searchConnectionName = System.getenv("AI_SEARCH_CONNECTION_NAME"); String searchIndexName = System.getenv("AI_SEARCH_INDEX_NAME");
Index index = indexesClient.createOrUpdate( indexName, indexVersion, new AzureAISearchIndex() .setConnectionName(searchConnectionName) .setIndexName(searchIndexName) );
System.out.println("Created index: " + index.getName());
Access OpenAI Evaluations
The SDK exposes OpenAI's official SDK for evaluations:
import com.openai.services.EvalService;
EvalService evalService = evaluationsClient.getOpenAIClient(); // Use OpenAI evaluation APIs directly
Best Practices
-
Use DefaultAzureCredential for production authentication
-
Reuse client builder to create multiple sub-clients efficiently
-
Handle pagination when listing resources with PagedIterable
-
Use environment variables for connection names and configuration
-
Check connection types before accessing credentials
Error Handling
import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceNotFoundException;
try { Index index = indexesClient.get(indexName, version); } catch (ResourceNotFoundException e) { System.err.println("Index not found: " + indexName); } catch (HttpResponseException e) { System.err.println("Error: " + e.getResponse().getStatusCode()); }
Reference Links
Resource URL
Product Docs https://learn.microsoft.com/azure/ai-studio/
API Reference https://learn.microsoft.com/rest/api/aifoundry/aiprojects/
GitHub Source https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-projects
Samples https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-projects/src/samples