openai/openai-dotnet

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
OpenAI_2.2.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

examples/Assistants/Example05_AssistantsWithVision.cs

78lines · modeblame

9f9f2936Jose Arriaga Maldonado2 years ago1using NUnit.Framework;
2using OpenAI.Assistants;
3using OpenAI.Files;
4using System;
5using System.ClientModel;
a330c2e7Jose Arriaga Maldonado1 years ago6using System.IO;
9f9f2936Jose Arriaga Maldonado2 years ago7
8cc6643fJose Arriaga Maldonado2 years ago8namespace OpenAI.Examples;
74848f8dJose Arriaga Maldonado2 years ago9
5dce104aJose Arriaga Maldonado1 years ago10// This example uses experimental APIs which are subject to change. To use experimental APIs,
11// please acknowledge their experimental status by suppressing the corresponding warning.
12#pragma warning disable OPENAI001
13
8cc6643fJose Arriaga Maldonado2 years ago14public partial class AssistantExamples
9f9f2936Jose Arriaga Maldonado2 years ago15{
16[Test]
8cc6643fJose Arriaga Maldonado2 years ago17public void Example05_AssistantsWithVision()
9f9f2936Jose Arriaga Maldonado2 years ago18{
19OpenAIClient openAIClient = new(Environment.GetEnvironmentVariable("OPENAI_API_KEY"));
31c2ba63Jose Arriaga Maldonado1 years ago20OpenAIFileClient fileClient = openAIClient.GetOpenAIFileClient();
9f9f2936Jose Arriaga Maldonado2 years ago21AssistantClient assistantClient = openAIClient.GetAssistantClient();
22
19ceae44ShivangiReja1 years ago23OpenAIFile pictureOfAppleFile = fileClient.UploadFile(
e4af1691Jose Arriaga Maldonado1 years ago24Path.Combine("Assets", "images_apple.png"),
9f9f2936Jose Arriaga Maldonado2 years ago25FileUploadPurpose.Vision);
e4af1691Jose Arriaga Maldonado1 years ago26
27Uri linkToPictureOfOrange = new("https://raw.githubusercontent.com/openai/openai-dotnet/refs/heads/main/examples/Assets/images_orange.png");
9f9f2936Jose Arriaga Maldonado2 years ago28
29Assistant assistant = assistantClient.CreateAssistant(
30"gpt-4o",
31new AssistantCreationOptions()
32{
33Instructions = "When asked a question, attempt to answer very concisely. "
34+ "Prefer one-sentence answers whenever feasible."
35});
36
37AssistantThread thread = assistantClient.CreateThread(new ThreadCreationOptions()
38{
39InitialMessages =
40{
41new ThreadInitializationMessage(
d665b61fTravis Wilson2 years ago42MessageRole.User,
9f9f2936Jose Arriaga Maldonado2 years ago43[
44"Hello, assistant! Please compare these two images for me:",
45MessageContent.FromImageFileId(pictureOfAppleFile.Id),
19ceae44ShivangiReja1 years ago46MessageContent.FromImageUri(linkToPictureOfOrange),
9f9f2936Jose Arriaga Maldonado2 years ago47]),
48}
49});
50
7bdecfd8Anne Thompson2 years ago51CollectionResult<StreamingUpdate> streamingUpdates = assistantClient.CreateRunStreaming(
a330c2e7Jose Arriaga Maldonado1 years ago52thread.Id,
53assistant.Id,
9f9f2936Jose Arriaga Maldonado2 years ago54new RunCreationOptions()
55{
56AdditionalInstructions = "When possible, try to sneak in puns if you're asked to compare things.",
57});
58
59foreach (StreamingUpdate streamingUpdate in streamingUpdates)
60{
61if (streamingUpdate.UpdateKind == StreamingUpdateReason.RunCreated)
62{
63Console.WriteLine($"--- Run started! ---");
64}
65if (streamingUpdate is MessageContentUpdate contentUpdate)
66{
67Console.Write(contentUpdate.Text);
68}
69}
70
71// Delete temporary resources, if desired
13a9c686Jose Arriaga Maldonado2 years ago72_ = fileClient.DeleteFile(pictureOfAppleFile.Id);
a330c2e7Jose Arriaga Maldonado1 years ago73_ = assistantClient.DeleteThread(thread.Id);
74_ = assistantClient.DeleteAssistant(assistant.Id);
9f9f2936Jose Arriaga Maldonado2 years ago75}
76}
5dce104aJose Arriaga Maldonado1 years ago77
78#pragma warning restore OPENAI001