refactor: rewrite OpenAI integration

- use `OpenAI` and `Azure.AI.OpenAI`
- use `developer` role instead of `system` for OpenAI's `o1` series models
- use streaming response
- re-design `AIAssistant`

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2024-12-24 15:51:27 +08:00
parent cf90e51887
commit a915708db3
No known key found for this signature in database
12 changed files with 270 additions and 212 deletions

View file

@ -1199,6 +1199,25 @@ namespace SourceGit.ViewModels
App.GetLauncer()?.OpenRepositoryInTab(node, null);
}
public AvaloniaList<Models.OpenAIService> GetPreferedOpenAIServices()
{
var services = Preferences.Instance.OpenAIServices;
if (services == null || services.Count == 0)
return [];
if (services.Count == 1)
return services;
var prefered = _settings.PreferedOpenAIService;
foreach (var service in services)
{
if (service.Name.Equals(prefered, StringComparison.Ordinal))
return [service];
}
return services;
}
public ContextMenu CreateContextMenuForGitFlow()
{
var menu = new ContextMenu();