File: OpenAIResource.cs
Web Access
Project: src\src\Aspire.Hosting.OpenAI\Aspire.Hosting.OpenAI.csproj (Aspire.Hosting.OpenAI)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Aspire.Hosting.ApplicationModel;
 
namespace Aspire.Hosting.OpenAI;
 
/// <summary>
/// Represents a logical OpenAI account/configuration that can host one or more <see cref="OpenAIModelResource"/> children.
/// </summary>
public sealed class OpenAIResource : Resource, IResourceWithConnectionString
{
    internal ParameterResource DefaultKeyParameter { get; }
    private const string DefaultEndpoint = "https://api.openai.com/v1";
 
    /// <summary>
    /// Gets or sets the service endpoint base URI for OpenAI-compatible services.
    /// Defaults to https://api.openai.com/v1.
    /// </summary>
    public string Endpoint { get; internal set; } = DefaultEndpoint;
 
    /// <summary>
    /// Creates a new <see cref="OpenAIResource"/>.
    /// </summary>
    /// <param name="name">Resource name.</param>
    /// <param name="key">API key parameter for OpenAI.</param>
    public OpenAIResource(string name, ParameterResource key) : base(name)
    {
        Key = DefaultKeyParameter = key;
    }
 
    /// <summary>
    /// Gets or sets the API key for accessing OpenAI.
    /// </summary>
    public ParameterResource Key { get; internal set; }
 
    /// <summary>
    /// Gets the base connection string for the OpenAI account.
    /// </summary>
    public ReferenceExpression ConnectionStringExpression =>
        ReferenceExpression.Create($"Endpoint={Endpoint};Key={Key}");
}