openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.9.1

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

examples/Conversations/Example01_ConversationProtocolAsync.cs

77lines · modeblame

8d8b4af5Jose Arriaga Maldonado9 months ago1using NUnit.Framework;
2using OpenAI.Conversations;
3using System;
4using System.ClientModel;
7dee5d8bJose Arriaga Maldonado9 months ago5using System.ClientModel.Primitives;
8d8b4af5Jose Arriaga Maldonado9 months ago6using System.Text.Json;
7using System.Threading.Tasks;
8
9namespace OpenAI.Examples;
10
11// This example uses experimental APIs which are subject to change. To use experimental APIs,
12// please acknowledge their experimental status by suppressing the corresponding warning.
13#pragma warning disable OPENAI001
14
15public partial class ConversationExamples
16{
17[Test]
18public async Task Example01_ConversationProtocolAsync()
19{
20ConversationClient client = new(Environment.GetEnvironmentVariable("OPENAI_API_KEY"));
21
22BinaryData createConversationParameters = BinaryData.FromBytes("""
23{
24"metadata": { "topic": "test" },
25"items": [
26{
27"type": "message",
28"role": "user",
29"content": "Say 'this is a test.'"
7dee5d8bJose Arriaga Maldonado9 months ago30},
31{
32"type": "message",
33"role": "assistant",
34"content": "This is a test."
8d8b4af5Jose Arriaga Maldonado9 months ago35}
36]
37}
38"""u8.ToArray());
39
40using BinaryContent createConversationRequestContent = BinaryContent.Create(createConversationParameters);
41ClientResult createConversationResult = await client.CreateConversationAsync(createConversationRequestContent);
42using JsonDocument createConversationResultAsJson = JsonDocument.Parse(createConversationResult.GetRawResponse().Content.ToString());
43string conversationId = createConversationResultAsJson.RootElement
44.GetProperty("id"u8)
45.GetString();
46
7dee5d8bJose Arriaga Maldonado9 months ago47Console.WriteLine($"Conversation created.");
48Console.WriteLine($" Conversation ID: {conversationId}");
8d8b4af5Jose Arriaga Maldonado9 months ago49Console.WriteLine();
50
7dee5d8bJose Arriaga Maldonado9 months ago51AsyncCollectionResult getConversationItemsResults = client.GetConversationItemsAsync(conversationId);
52await foreach(ClientResult result in getConversationItemsResults.GetRawPagesAsync())
53{
54using JsonDocument getConversationItemsResultAsJson = JsonDocument.Parse(result.GetRawResponse().Content.ToString());
55foreach (JsonElement element in getConversationItemsResultAsJson.RootElement.GetProperty("data").EnumerateArray())
56{
57string messageId = element.GetProperty("id"u8).ToString();
8d8b4af5Jose Arriaga Maldonado9 months ago58
7dee5d8bJose Arriaga Maldonado9 months ago59Console.WriteLine($"Message retrieved.");
60Console.WriteLine($" Message ID: {messageId}");
61Console.WriteLine();
62}
63}
8d8b4af5Jose Arriaga Maldonado9 months ago64
65ClientResult deleteConversationResult = await client.DeleteConversationAsync(conversationId);
66using JsonDocument deleteConversationResultAsJson = JsonDocument.Parse(deleteConversationResult.GetRawResponse().Content.ToString());
67bool deleted = deleteConversationResultAsJson.RootElement
68.GetProperty("deleted"u8)
69.GetBoolean();
70
7dee5d8bJose Arriaga Maldonado9 months ago71Console.WriteLine($"Conversation deleted.");
72Console.WriteLine($" Deleted: {deleted}");
8d8b4af5Jose Arriaga Maldonado9 months ago73Console.WriteLine();
74}
75}
76
77#pragma warning restore OPENAI001