Skip to content

Commit b00bf2a

Browse files
committed
feature: supports to read OpenAI API key from env (#1748)
Signed-off-by: leo <[email protected]>
1 parent 2f61f06 commit b00bf2a

File tree

5 files changed

+16
-2
lines changed

5 files changed

+16
-2
lines changed

src/Models/OpenAI.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,12 @@ public string ApiKey
117117
set => SetProperty(ref _apiKey, value);
118118
}
119119

120+
public bool ReadApiKeyFromEnv
121+
{
122+
get => _readApiKeyFromEnv;
123+
set => SetProperty(ref _readApiKeyFromEnv, value);
124+
}
125+
120126
public string Model
121127
{
122128
get => _model;
@@ -176,8 +182,9 @@ Your only goal is to retrieve a single commit message.
176182

177183
public async Task ChatAsync(string prompt, string question, CancellationToken cancellation, Action<string> onUpdate)
178184
{
185+
var finalKey = _readApiKeyFromEnv ? Environment.GetEnvironmentVariable(_apiKey) : _apiKey;
179186
var server = new Uri(_server);
180-
var key = new ApiKeyCredential(_apiKey);
187+
var key = new ApiKeyCredential(finalKey);
181188
var oaiClient = _server.Contains("openai.azure.com/", StringComparison.Ordinal)
182189
? new AzureOpenAIClient(server, key)
183190
: new OpenAIClient(key, new() { Endpoint = server });
@@ -220,6 +227,7 @@ public async Task ChatAsync(string prompt, string question, CancellationToken ca
220227
private string _name;
221228
private string _server;
222229
private string _apiKey;
230+
private bool _readApiKeyFromEnv = false;
223231
private string _model;
224232
private bool _streaming = true;
225233
private string _analyzeDiffPrompt;

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,7 @@
530530
<x:String x:Key="Text.Preferences.AI.GenerateSubjectPrompt" xml:space="preserve">Generate Subject Prompt</x:String>
531531
<x:String x:Key="Text.Preferences.AI.Model" xml:space="preserve">Model</x:String>
532532
<x:String x:Key="Text.Preferences.AI.Name" xml:space="preserve">Name</x:String>
533+
<x:String x:Key="Text.Preferences.AI.ReadApiKeyFromEnv" xml:space="preserve">Entered value is the name to load API key from ENV</x:String>
533534
<x:String x:Key="Text.Preferences.AI.Server" xml:space="preserve">Server</x:String>
534535
<x:String x:Key="Text.Preferences.AI.Streaming" xml:space="preserve">Enable Streaming</x:String>
535536
<x:String x:Key="Text.Preferences.Appearance" xml:space="preserve">APPEARANCE</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@
534534
<x:String x:Key="Text.Preferences.AI.GenerateSubjectPrompt" xml:space="preserve">Generate Subject Prompt</x:String>
535535
<x:String x:Key="Text.Preferences.AI.Model" xml:space="preserve">模型</x:String>
536536
<x:String x:Key="Text.Preferences.AI.Name" xml:space="preserve">配置名称</x:String>
537+
<x:String x:Key="Text.Preferences.AI.ReadApiKeyFromEnv" xml:space="preserve">从环境变量(填写环境变量名)中读取API密钥</x:String>
537538
<x:String x:Key="Text.Preferences.AI.Server" xml:space="preserve">服务地址</x:String>
538539
<x:String x:Key="Text.Preferences.AI.Streaming" xml:space="preserve">启用流式输出</x:String>
539540
<x:String x:Key="Text.Preferences.Appearance" xml:space="preserve">外观配置</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@
534534
<x:String x:Key="Text.Preferences.AI.GenerateSubjectPrompt" xml:space="preserve">產生提交訊息提示詞</x:String>
535535
<x:String x:Key="Text.Preferences.AI.Model" xml:space="preserve">模型</x:String>
536536
<x:String x:Key="Text.Preferences.AI.Name" xml:space="preserve">名稱</x:String>
537+
<x:String x:Key="Text.Preferences.AI.ReadApiKeyFromEnv" xml:space="preserve">從環境變數中(輸入為環境變數名稱)載入金鑰</x:String>
537538
<x:String x:Key="Text.Preferences.AI.Server" xml:space="preserve">伺服器</x:String>
538539
<x:String x:Key="Text.Preferences.AI.Streaming" xml:space="preserve">啟用串流輸出</x:String>
539540
<x:String x:Key="Text.Preferences.Appearance" xml:space="preserve">外觀設定</x:String>

src/Views/Preferences.axaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -788,7 +788,10 @@
788788
<TextBox Margin="0,4,0,0" CornerRadius="3" Height="28" Text="{Binding Model, Mode=TwoWay}"/>
789789

790790
<TextBlock Margin="0,12,0,0" Text="{DynamicResource Text.Preferences.AI.ApiKey}"/>
791-
<TextBox Margin="0,4,0,0" CornerRadius="3" Height="28" Text="{Binding ApiKey, Mode=TwoWay}" PasswordChar="*"/>
791+
<TextBox Margin="0,4,0,0" CornerRadius="3" Height="28" Text="{Binding ApiKey, Mode=TwoWay}" PasswordChar="*" RevealPassword="{Binding ReadApiKeyFromEnv, Mode=OneWay}"/>
792+
<CheckBox Margin="0,4,0,0"
793+
Content="{DynamicResource Text.Preferences.AI.ReadApiKeyFromEnv}"
794+
IsChecked="{Binding ReadApiKeyFromEnv, Mode=TwoWay}"/>
792795

793796
<TextBlock Margin="0,12,0,0" Text="{DynamicResource Text.Preferences.AI.AnalyzeDiffPrompt}"/>
794797
<TextBox Height="120"

0 commit comments

Comments
 (0)