openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.11.0-oidc.test1

Branches

Tags

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

Clone

HTTPS

Download ZIP

examples/Conversations/Example01_ConversationProtocol.cs

76lines · modepreview

using NUnit.Framework;
using OpenAI.Conversations;
using System;
using System.ClientModel;
using System.ClientModel.Primitives;
using System.Text.Json;

namespace OpenAI.Examples;

// This example uses experimental APIs which are subject to change. To use experimental APIs,
// please acknowledge their experimental status by suppressing the corresponding warning.
#pragma warning disable OPENAI001

public partial class ConversationExamples
{
    [Test]
    public void Example01_ConversationProtocol()
    {
        ConversationClient client = new(Environment.GetEnvironmentVariable("OPENAI_API_KEY"));

        BinaryData createConversationParameters = BinaryData.FromBytes("""
            {
               "metadata": { "topic": "test" },
               "items": [
                   {
                       "type": "message",
                       "role": "user",
                       "content": "Say 'this is a test.'"
                   },
                   {
                       "type": "message",
                       "role": "assistant",
                       "content": "This is a test."
                   }
               ]
            }
            """u8.ToArray());

        using BinaryContent createConversationRequestContent = BinaryContent.Create(createConversationParameters);
        ClientResult createConversationResult = client.CreateConversation(createConversationRequestContent);
        using JsonDocument createConversationResultAsJson = JsonDocument.Parse(createConversationResult.GetRawResponse().Content.ToString());
        string conversationId = createConversationResultAsJson.RootElement
            .GetProperty("id"u8)
            .GetString();

        Console.WriteLine($"Conversation created.");
        Console.WriteLine($"    Conversation ID: {conversationId}");
        Console.WriteLine();

        CollectionResult getConversationItemsResults = client.GetConversationItems(conversationId);
        foreach (ClientResult result in getConversationItemsResults.GetRawPages())
        {
            using JsonDocument getConversationItemsResultAsJson = JsonDocument.Parse(result.GetRawResponse().Content.ToString());
            foreach (JsonElement element in getConversationItemsResultAsJson.RootElement.GetProperty("data").EnumerateArray())
            {
                string messageId = element.GetProperty("id"u8).ToString();

                Console.WriteLine($"Message retrieved.");
                Console.WriteLine($"    Message ID: {messageId}");
                Console.WriteLine();
            }
        }

        ClientResult deleteConversationResult = client.DeleteConversation(conversationId);
        using JsonDocument deleteConversationResultAsJson = JsonDocument.Parse(deleteConversationResult.GetRawResponse().Content.ToString());
        bool deleted = deleteConversationResultAsJson.RootElement
            .GetProperty("deleted"u8)
            .GetBoolean();

        Console.WriteLine($"Conversation deleted.");
        Console.WriteLine($"    Deleted: {deleted}");
        Console.WriteLine();
    }
}

#pragma warning restore OPENAI001