2024-10-02 12:57:50 -04:00

127 lines
4.7 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// CreateAnAgent.cs
using AutoGen;
using AutoGen.Core;
using AutoGen.OpenAI;
using AutoGen.OpenAI.Extension;
using FluentAssertions;
using OpenAI;
public partial class AssistantCodeSnippet
{
public void CodeSnippet1()
{
#region code_snippet_1
// get OpenAI Key and create config
var openAIKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? throw new Exception("Please set OPENAI_API_KEY environment variable.");
var llmConfig = new OpenAIConfig(openAIKey, "gpt-3.5-turbo");
// create assistant agent
var assistantAgent = new AssistantAgent(
name: "assistant",
systemMessage: "You are an assistant that help user to do some tasks.",
llmConfig: new ConversableAgentConfig
{
Temperature = 0,
ConfigList = new[] { llmConfig },
});
#endregion code_snippet_1
}
public void CodeSnippet2()
{
#region code_snippet_2
// get OpenAI Key and create config
var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
var model = "gpt-4o-mini";
var openAIClient = new OpenAIClient(apiKey);
// create assistant agent
var assistantAgent = new OpenAIChatAgent(
name: "assistant",
systemMessage: "You are an assistant that help user to do some tasks.",
chatClient: openAIClient.GetChatClient(model))
.RegisterMessageConnector()
.RegisterPrintMessage();
#endregion code_snippet_2
}
#region code_snippet_3
/// <summary>
/// convert input to upper case
/// </summary>
/// <param name="input">input</param>
[Function]
public async Task<string> UpperCase(string input)
{
var result = input.ToUpper();
return result;
}
#endregion code_snippet_3
public async Task CodeSnippet4()
{
// get OpenAI Key and create config
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string endPoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); // change to your endpoint
var model = "gpt-4o-mini";
var openAIClient = new OpenAIClient(new System.ClientModel.ApiKeyCredential(apiKey), new OpenAIClientOptions
{
Endpoint = new Uri(endPoint),
});
#region code_snippet_4
var assistantAgent = new OpenAIChatAgent(
chatClient: openAIClient.GetChatClient(model),
name: "assistant",
systemMessage: "You are an assistant that convert user input to upper case.",
functions: [
this.UpperCaseFunctionContract.ToChatTool(), // The FunctionDefinition object for the UpperCase function
])
.RegisterMessageConnector()
.RegisterPrintMessage();
var response = await assistantAgent.SendAsync("hello");
response.Should().BeOfType<ToolCallMessage>();
var toolCallMessage = (ToolCallMessage)response;
toolCallMessage.ToolCalls.Count.Should().Be(1);
toolCallMessage.ToolCalls.First().FunctionName.Should().Be("UpperCase");
#endregion code_snippet_4
}
public async Task CodeSnippet5()
{
// get OpenAI Key and create config
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string endPoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); // change to your endpoint
var model = "gpt-4o-mini";
var openAIClient = new OpenAIClient(new System.ClientModel.ApiKeyCredential(apiKey), new OpenAIClientOptions
{
Endpoint = new Uri(endPoint),
});
#region code_snippet_5
var functionCallMiddleware = new FunctionCallMiddleware(
functions: [this.UpperCaseFunctionContract],
functionMap: new Dictionary<string, Func<string, Task<string>>>()
{
{ this.UpperCaseFunctionContract.Name, this.UpperCase },
});
var assistantAgent = new OpenAIChatAgent(
name: "assistant",
systemMessage: "You are an assistant that convert user input to upper case.",
chatClient: openAIClient.GetChatClient(model))
.RegisterMessageConnector()
.RegisterStreamingMiddleware(functionCallMiddleware);
var response = await assistantAgent.SendAsync("hello");
response.Should().BeOfType<TextMessage>();
response.From.Should().Be("assistant");
var textMessage = (TextMessage)response;
textMessage.Content.Should().Be("HELLO");
#endregion code_snippet_5
}
}