Skip to content

Commit 912cfe4

Browse files
authored
Merge pull request #78 from betalgo/dev
v6.6.5
2 parents 59450c6 + 3a3842a commit 912cfe4

File tree

13 files changed

+148
-38
lines changed

13 files changed

+148
-38
lines changed

OpenAI.Playground/Program.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@
3131
//await ImageTestHelper.RunSimpleCreateImageVariationTest(sdk);
3232
//await ModerationTestHelper.CreateModerationTest(sdk);
3333
await CompletionTestHelper.RunSimpleCompletionTest(sdk);
34+
await CompletionTestHelper.RunSimpleCompletionTest2(sdk);
35+
await CompletionTestHelper.RunSimpleCompletionTest3(sdk);
3436
//await EmbeddingTestHelper.RunSimpleEmbeddingTest(sdk);
35-
//await FileTestHelper.RunSimpleFileTest(sdk);
36-
////await FineTuningTestHelper.CleanUpAllFineTunings(sdk); //!!!!! will delete all fine-tunings
37+
//////await FileTestHelper.RunSimpleFileTest(sdk); //will delete files
38+
//////await FineTuningTestHelper.CleanUpAllFineTunings(sdk); //!!!!! will delete all fine-tunings
3739
//await FineTuningTestHelper.RunCaseStudyIsTheModelMakingUntrueStatements(sdk);
3840
Console.ReadLine();

OpenAI.Playground/TestHelpers/CompletionTestHelper.cs

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public static async Task RunSimpleCompletionTest(IOpenAIService sdk)
1818
Prompt = "Once upon a time",
1919
// PromptAsList = new []{"Once upon a time"},
2020
MaxTokens = 5,
21-
LogProbs = 1,
21+
LogProbs = 1
2222
}, Models.Davinci);
2323

2424
if (completionResult.Successful)
@@ -43,5 +43,84 @@ public static async Task RunSimpleCompletionTest(IOpenAIService sdk)
4343
throw;
4444
}
4545
}
46+
47+
public static async Task RunSimpleCompletionTest2(IOpenAIService sdk)
48+
{
49+
ConsoleExtensions.WriteLine("Completion Testing is starting:", ConsoleColor.Cyan);
50+
51+
try
52+
{
53+
ConsoleExtensions.WriteLine("Completion Test:", ConsoleColor.DarkCyan);
54+
var completionResult = await sdk.Completions.CreateCompletion(new CompletionCreateRequest()
55+
{
56+
Prompt = "Once upon a time",
57+
// PromptAsList = new []{"Once upon a time"},
58+
MaxTokens = 5,
59+
LogProbs = 1,
60+
Model = Models.TextDavinciV3
61+
});
62+
63+
if (completionResult.Successful)
64+
{
65+
Console.WriteLine(completionResult.Choices.FirstOrDefault());
66+
}
67+
else
68+
{
69+
if (completionResult.Error == null)
70+
{
71+
throw new Exception("Unknown Error");
72+
}
73+
74+
Console.WriteLine($"{completionResult.Error.Code}: {completionResult.Error.Message}");
75+
}
76+
77+
Console.WriteLine(completionResult.Choices.FirstOrDefault());
78+
}
79+
catch (Exception e)
80+
{
81+
Console.WriteLine(e);
82+
throw;
83+
}
84+
}
85+
86+
public static async Task RunSimpleCompletionTest3(IOpenAIService sdk)
87+
{
88+
ConsoleExtensions.WriteLine("Completion Testing is starting:", ConsoleColor.Cyan);
89+
90+
try
91+
{
92+
ConsoleExtensions.WriteLine("Completion Test:", ConsoleColor.DarkCyan);
93+
//Parameter Model should override the Model in the ObjectModel
94+
var completionResult = await sdk.Completions.CreateCompletion(new CompletionCreateRequest()
95+
{
96+
Prompt = "Once upon a time",
97+
// PromptAsList = new []{"Once upon a time"},
98+
MaxTokens = 5,
99+
LogProbs = 1,
100+
Model = Models.Ada
101+
}, Models.TextDavinciV3);
102+
103+
if (completionResult.Successful)
104+
{
105+
Console.WriteLine(completionResult.Choices.FirstOrDefault());
106+
}
107+
else
108+
{
109+
if (completionResult.Error == null)
110+
{
111+
throw new Exception("Unknown Error");
112+
}
113+
114+
Console.WriteLine($"{completionResult.Error.Code}: {completionResult.Error.Message}");
115+
}
116+
117+
Console.WriteLine(completionResult.Choices.FirstOrDefault());
118+
}
119+
catch (Exception e)
120+
{
121+
Console.WriteLine(e);
122+
throw;
123+
}
124+
}
46125
}
47126
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using OpenAI.GPT3.ObjectModels.SharedModels;
2+
3+
namespace OpenAI.GPT3.Extensions
4+
{
5+
public static class ModelExtension
6+
{
7+
public static void ProcessModelId(this IOpenAiModels.IModel modelFromObject, string? modelFromParameter, string? defaultModelId)
8+
{
9+
modelFromObject.Model = modelFromParameter ?? modelFromObject.Model ?? defaultModelId ?? throw new ArgumentNullException("Model Id");
10+
}
11+
}
12+
}

OpenAI.SDK/Interfaces/IOpenAIService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public interface IOpenAIService
4141

4242

4343
/// <summary>
44-
/// Set default engine
44+
/// Set default model
4545
/// </summary>
46-
/// <param name="engineId"></param>
47-
void SetDefaultEngineId(string engineId);
46+
/// <param name="modelId"></param>
47+
void SetDefaultModelId(string modelId);
4848
}

OpenAI.SDK/Managers/OpenAICompletions.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ namespace OpenAI.GPT3.Managers;
77

88
public partial class OpenAIService : ICompletionService
99
{
10-
public async Task<CompletionCreateResponse> CreateCompletion(CompletionCreateRequest createCompletionRequest, string? engineId = null)
10+
public async Task<CompletionCreateResponse> CreateCompletion(CompletionCreateRequest createCompletionRequest, string? modelId = null)
1111
{
12-
return await _httpClient.PostAndReadAsAsync<CompletionCreateResponse>(_endpointProvider.CompletionCreate(ProcessEngineId(engineId)), createCompletionRequest);
12+
createCompletionRequest.ProcessModelId(modelId, _defaultModelId);
13+
14+
return await _httpClient.PostAndReadAsAsync<CompletionCreateResponse>(_endpointProvider.CompletionCreate(), createCompletionRequest);
1315
}
1416
}

OpenAI.SDK/Managers/OpenAIEdits.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,9 @@ namespace OpenAI.GPT3.Managers;
77

88
public partial class OpenAIService : IEditService
99
{
10-
public async Task<EditCreateResponse> CreateEdit(EditCreateRequest editCreate, string? engineId = null)
10+
public async Task<EditCreateResponse> CreateEdit(EditCreateRequest editCreate, string? modelId = null)
1111
{
12-
if (editCreate.Model != null && engineId != null)
13-
{
14-
throw new ArgumentException("You cannot specify both a model and an engineId");
15-
}
16-
else if (editCreate.Model == null && engineId != null)
17-
{
18-
editCreate.Model = ProcessEngineId(engineId);
19-
}
20-
12+
editCreate.ProcessModelId(modelId, _defaultModelId);
2113
return await _httpClient.PostAndReadAsAsync<EditCreateResponse>(_endpointProvider.EditCreate(), editCreate);
2214
}
2315
}

OpenAI.SDK/Managers/OpenAIModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ public async Task<ModelListResponse> ListModel()
1313

1414
public async Task<ModelRetrieveResponse> RetrieveModel(string model)
1515
{
16-
return await _httpClient.GetFromJsonAsync<ModelRetrieveResponse>(_endpointProvider.ModelRetrieve(ProcessEngineId(model)));
16+
return await _httpClient.GetFromJsonAsync<ModelRetrieveResponse>(_endpointProvider.ModelRetrieve(model));
1717
}
1818
}

OpenAI.SDK/Managers/OpenAIService.cs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ public partial class OpenAIService : IOpenAIService
99
{
1010
private readonly IOpenAiEndpointProvider _endpointProvider;
1111
private readonly HttpClient _httpClient;
12-
private string? _engineId;
12+
private string? _defaultModelId;
1313

1414
[ActivatorUtilitiesConstructor]
1515
public OpenAIService(HttpClient httpClient, IOptions<OpenAiOptions> settings)
16-
: this(settings.Value, httpClient) { }
16+
: this(settings.Value, httpClient)
17+
{
18+
}
1719

1820
public OpenAIService(OpenAiOptions settings, HttpClient? httpClient = null)
1921
{
@@ -30,7 +32,7 @@ public OpenAIService(OpenAiOptions settings, HttpClient? httpClient = null)
3032
}
3133

3234
_endpointProvider = new OpenAiEndpointProvider(settings.ApiVersion);
33-
_engineId = OpenAiOptions.DefaultEngineId;
35+
_defaultModelId = OpenAiOptions.DefaultEngineId;
3436
}
3537

3638

@@ -43,14 +45,22 @@ public OpenAIService(OpenAiOptions settings, HttpClient? httpClient = null)
4345
public IImageService Image => this;
4446
public IEditService Edit => this;
4547

46-
public void SetDefaultEngineId(string engineId)
48+
/// <summary>
49+
/// Sets default Model Id
50+
/// </summary>
51+
/// <param name="modelId"></param>
52+
public void SetDefaultModelId(string modelId)
4753
{
48-
_engineId = engineId;
54+
_defaultModelId = modelId;
4955
}
5056

51-
private string ProcessEngineId(string? engineId)
57+
/// <summary>
58+
/// Get default Model Id
59+
/// </summary>
60+
/// <returns></returns>
61+
public string? GetDefaultModelId()
5262
{
53-
return engineId ?? _engineId ?? throw new ArgumentNullException(nameof(engineId));
63+
return _defaultModelId;
5464
}
5565
}
5666
}

OpenAI.SDK/ObjectModels/SharedModels/IOpenAiModels.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public interface IId
99

1010
public interface IModel
1111
{
12-
string Model { get; set; }
12+
string? Model { get; set; }
1313
}
1414

1515
public interface ILogProbsRequest

OpenAI.SDK/ObjectModels/SharedModels/LogProbsResponse.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System.Linq;
2-
using System.Text.Json.Serialization;
1+
using System.Text.Json.Serialization;
32

43
namespace OpenAI.GPT3.ObjectModels.SharedModels;
54

@@ -11,10 +10,10 @@ public record LogProbsResponse
1110

1211
[JsonPropertyName("top_logprobs")] public List<Dictionary<string, double>> TopLogProbsRaw { get; set; }
1312

14-
public List<TopLogProbResponse> TopLogProbs => TopLogProbsRaw.SelectMany(r => r.Select(a=> new TopLogProbResponse()
13+
public List<TopLogProbResponse> TopLogProbs => TopLogProbsRaw.SelectMany(r => r.Select(a => new TopLogProbResponse()
1514
{
1615
Key = a.Key,
17-
LogProp= a.Value
16+
LogProp = a.Value
1817
})).ToList();
1918

2019
[JsonPropertyName("text_offset")] public List<int> TextOffset { get; set; }
@@ -24,4 +23,4 @@ public class TopLogProbResponse
2423
{
2524
public string Key { get; set; }
2625
public double LogProp { get; set; }
27-
}
26+
}

0 commit comments

Comments
 (0)