You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

FunctionCallCodeSnippet.cs 6.1 kB

Bring Dotnet AutoGen (#924) * update readme * update * update * update * update * update * update * add sample project * revert notebook change back * update * update interactive version * add nuget package * refactor Message * update example * add azure nightly build pipeline * Set up CI with Azure Pipelines [skip ci] * Update nightly-build.yml for Azure Pipelines * add dotnet interactive package * add dotnet interactive package * update pipeline * add nuget feed back * remove dotnet-tool feed * remove dotnet-tool feed comment * update pipeline * update build name * Update nightly-build.yml * Delete .github/workflows/dotnet-ci.yml * update * add working_dir to use step * add initateChat api * update oai package * Update dotnet-build.yml * Update dotnet-run-openai-test-and-notebooks.yml * update build workflow * update build workflow * update nuget feed * update nuget feed * update aoai and sk version * Update InteractiveService.cs * add support for GPT 4V * add DalleAndGPT4V example * update example * add user proxy agent * add readme * bump version * update example * add dotnet interactive hook * update * udpate tests * add website * update index.md * add docs * update doc * move sk dependency out of core package * udpate doc * Update Use-function-call.md * add type safe function call document * update doc * update doc * add dock * Update Use-function-call.md * add GenerateReplyOptions * remove IChatLLM * update version * update doc * update website * add sample * fix link * add middleware agent * clean up doc * bump version * update doc * update * add Other Language * remove warnings * add sign.props * add sign step * fix pipelien * auth * real sign * disable PR trigger * update * disable PR trigger * use microbuild machine * update build pipeline to add publish to internal feed * add internal feed * fix build pipeline * add dotnet prefix * update ci * add build number * update run number * update source * update token * update * remove adding source * add publish to github package * try again * try again * ask for write pacakge * disable package when branch is not main * update * implement streaming agent * add test for streaming function call * update * fix #1588 * enable PR check for dotnet branch * add website readme * only publish to dotnet feed when pushing to dotnet branch * remove openai-test-and-notebooks workflow * update readme * update readme * update workflow * update getting-start * upgrade test and sample proejct to use .net 8 * fix global.json format && make loadFromConfig API internal only before implementing * update * add support for LM studio * add doc * Update README.md * add push and workflow_dispatch trigger * disable PR for main * add dotnet env * Update Installation.md * add nuget * refer to newtonsoft 13 * update branch to dotnet in docfx * Update Installation.md * pull out HumanInputMiddleware and FunctionCallMiddleware * fix tests * add link to sample folder * refactor message * refactor over IMessage * add more tests * add more test * fix build error * rename header * add semantic kernel project * update sk example * update dotnet version * add LMStudio function call example * rename LLaMAFunctin * remove dotnet run openai test and notebook workflow * add FunctionContract and test * update doc * add documents * add workflow * update * update sample * fix warning in test * reult length can be less then maximumOutputToKeep (#1804) * merge with main * add option to retrieve inner agent and middlewares from MiddlewareAgent * update doc * adjust namespace * update readme * fix test * use IMessage * more updates * update * fix test * add comments * use FunctionContract to replace FunctionDefinition * move AutoGen contrac to AutoGen.Core * update installation * refactor streamingAgent by adding StreamingMessage type * update sample * update samples * update * update * add test * fix test * bump version * add openaichat test * update * Update Example03_Agent_FunctionCall.cs * [.Net] improve docs (#1862) * add doc * add doc * add doc * add doc * add doc * add doc * update * fix test error * fix some error * fix test * fix test * add more tests * edits --------- Co-authored-by: ekzhu <ekzhu@users.noreply.github.com> * [.Net] Add fill form example (#1911) * add form filler example * update * fix ci error * [.Net] Add using AutoGen.Core in source generator (#1983) * fix using namespace bug in source generator * remove using in sourcegenerator test * disable PR test * Add .idea to .gitignore (#1988) * [.Net] publish to nuget.org feed (#1987) * publish to nuget * update ci * update dotnet-release * update release pipeline * add source * remove empty symbol package * update pipeline * remove tag * update installation guide * [.Net] Rename some classes && APIs based on doc review (#1980) * rename sequential group chat to round robin group chat * rename to sendInstruction * rename workflow to graph * rename some api * bump version * move Graph to GroupChat folder * rename fill application example * [.Net] Improve package description (#2161) * add discord link and update package description * Update getting-start.md * [.Net] Fix document comment from the most recent AutoGen.Net engineer sync (#2231) * update * rename RegisterPrintMessageHook to RegisterPrintMessage * update website * update update.md * fix link error * [.Net] Enable JsonMode and deterministic output in AutoGen.OpenAI OpenAIChatAgent (#2347) * update openai version && add sample for json output * add example in web * update update.md * update image url * [.Net] Add AutoGen.Mistral package (#2330) * add mstral client * enable streaming support * add mistralClientAgent * add test for function call * add extension * add support for toolcall and toolcall result message * add support for aggregate message * implement streaming function call * track (#2471) * [.Net] add mistral example (#2482) * update existing examples to use messageCOnnector * add overview * add function call document * add example 14 * add mistral token count usage example * update version * Update dotnet-release.yml (#2488) * update * revert gitattributes --------- Co-authored-by: mhensen <mh@webvize.nl> Co-authored-by: ekzhu <ekzhu@users.noreply.github.com> Co-authored-by: Krzysztof Kasprowicz <60486987+Krzysztof318@users.noreply.github.com>
2 years ago
Bring Dotnet AutoGen (#924) * update readme * update * update * update * update * update * update * add sample project * revert notebook change back * update * update interactive version * add nuget package * refactor Message * update example * add azure nightly build pipeline * Set up CI with Azure Pipelines [skip ci] * Update nightly-build.yml for Azure Pipelines * add dotnet interactive package * add dotnet interactive package * update pipeline * add nuget feed back * remove dotnet-tool feed * remove dotnet-tool feed comment * update pipeline * update build name * Update nightly-build.yml * Delete .github/workflows/dotnet-ci.yml * update * add working_dir to use step * add initateChat api * update oai package * Update dotnet-build.yml * Update dotnet-run-openai-test-and-notebooks.yml * update build workflow * update build workflow * update nuget feed * update nuget feed * update aoai and sk version * Update InteractiveService.cs * add support for GPT 4V * add DalleAndGPT4V example * update example * add user proxy agent * add readme * bump version * update example * add dotnet interactive hook * update * udpate tests * add website * update index.md * add docs * update doc * move sk dependency out of core package * udpate doc * Update Use-function-call.md * add type safe function call document * update doc * update doc * add dock * Update Use-function-call.md * add GenerateReplyOptions * remove IChatLLM * update version * update doc * update website * add sample * fix link * add middleware agent * clean up doc * bump version * update doc * update * add Other Language * remove warnings * add sign.props * add sign step * fix pipelien * auth * real sign * disable PR trigger * update * disable PR trigger * use microbuild machine * update build pipeline to add publish to internal feed * add internal feed * fix build pipeline * add dotnet prefix * update ci * add build number * update run number * update source * update token * update * remove adding source * add publish to github package * try again * try again * ask for write pacakge * disable package when branch is not main * update * implement streaming agent * add test for streaming function call * update * fix #1588 * enable PR check for dotnet branch * add website readme * only publish to dotnet feed when pushing to dotnet branch * remove openai-test-and-notebooks workflow * update readme * update readme * update workflow * update getting-start * upgrade test and sample proejct to use .net 8 * fix global.json format && make loadFromConfig API internal only before implementing * update * add support for LM studio * add doc * Update README.md * add push and workflow_dispatch trigger * disable PR for main * add dotnet env * Update Installation.md * add nuget * refer to newtonsoft 13 * update branch to dotnet in docfx * Update Installation.md * pull out HumanInputMiddleware and FunctionCallMiddleware * fix tests * add link to sample folder * refactor message * refactor over IMessage * add more tests * add more test * fix build error * rename header * add semantic kernel project * update sk example * update dotnet version * add LMStudio function call example * rename LLaMAFunctin * remove dotnet run openai test and notebook workflow * add FunctionContract and test * update doc * add documents * add workflow * update * update sample * fix warning in test * reult length can be less then maximumOutputToKeep (#1804) * merge with main * add option to retrieve inner agent and middlewares from MiddlewareAgent * update doc * adjust namespace * update readme * fix test * use IMessage * more updates * update * fix test * add comments * use FunctionContract to replace FunctionDefinition * move AutoGen contrac to AutoGen.Core * update installation * refactor streamingAgent by adding StreamingMessage type * update sample * update samples * update * update * add test * fix test * bump version * add openaichat test * update * Update Example03_Agent_FunctionCall.cs * [.Net] improve docs (#1862) * add doc * add doc * add doc * add doc * add doc * add doc * update * fix test error * fix some error * fix test * fix test * add more tests * edits --------- Co-authored-by: ekzhu <ekzhu@users.noreply.github.com> * [.Net] Add fill form example (#1911) * add form filler example * update * fix ci error * [.Net] Add using AutoGen.Core in source generator (#1983) * fix using namespace bug in source generator * remove using in sourcegenerator test * disable PR test * Add .idea to .gitignore (#1988) * [.Net] publish to nuget.org feed (#1987) * publish to nuget * update ci * update dotnet-release * update release pipeline * add source * remove empty symbol package * update pipeline * remove tag * update installation guide * [.Net] Rename some classes && APIs based on doc review (#1980) * rename sequential group chat to round robin group chat * rename to sendInstruction * rename workflow to graph * rename some api * bump version * move Graph to GroupChat folder * rename fill application example * [.Net] Improve package description (#2161) * add discord link and update package description * Update getting-start.md * [.Net] Fix document comment from the most recent AutoGen.Net engineer sync (#2231) * update * rename RegisterPrintMessageHook to RegisterPrintMessage * update website * update update.md * fix link error * [.Net] Enable JsonMode and deterministic output in AutoGen.OpenAI OpenAIChatAgent (#2347) * update openai version && add sample for json output * add example in web * update update.md * update image url * [.Net] Add AutoGen.Mistral package (#2330) * add mstral client * enable streaming support * add mistralClientAgent * add test for function call * add extension * add support for toolcall and toolcall result message * add support for aggregate message * implement streaming function call * track (#2471) * [.Net] add mistral example (#2482) * update existing examples to use messageCOnnector * add overview * add function call document * add example 14 * add mistral token count usage example * update version * Update dotnet-release.yml (#2488) * update * revert gitattributes --------- Co-authored-by: mhensen <mh@webvize.nl> Co-authored-by: ekzhu <ekzhu@users.noreply.github.com> Co-authored-by: Krzysztof Kasprowicz <60486987+Krzysztof318@users.noreply.github.com>
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // FunctionCallCodeSnippet.cs
  3. using AutoGen;
  4. using AutoGen.Core;
  5. using FluentAssertions;
  6. public partial class FunctionCallCodeSnippet
  7. {
  8. public async Task CodeSnippet4()
  9. {
  10. // get OpenAI Key and create config
  11. var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
  12. string endPoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); // change to your endpoint
  13. var llmConfig = new AzureOpenAIConfig(
  14. endpoint: endPoint,
  15. deploymentName: "gpt-3.5-turbo-16k", // change to your deployment name
  16. apiKey: apiKey);
  17. #region code_snippet_4
  18. var function = new TypeSafeFunctionCall();
  19. var assistantAgent = new AssistantAgent(
  20. name: "assistant",
  21. systemMessage: "You are an assistant that convert user input to upper case.",
  22. llmConfig: new ConversableAgentConfig
  23. {
  24. Temperature = 0,
  25. ConfigList = new[]
  26. {
  27. llmConfig
  28. },
  29. FunctionContracts = new[]
  30. {
  31. function.WeatherReportFunctionContract,
  32. },
  33. });
  34. var response = await assistantAgent.SendAsync("hello What's the weather in Seattle today? today is 2024-01-01");
  35. response.Should().BeOfType<ToolCallMessage>();
  36. var toolCallMessage = (ToolCallMessage)response;
  37. toolCallMessage.ToolCalls.Count.Should().Be(1);
  38. toolCallMessage.ToolCalls[0].FunctionName.Should().Be("WeatherReport");
  39. toolCallMessage.ToolCalls[0].FunctionArguments.Should().Be(@"{""location"":""Seattle"",""date"":""2024-01-01""}");
  40. #endregion code_snippet_4
  41. }
  42. public async Task CodeSnippet6()
  43. {
  44. // get OpenAI Key and create config
  45. var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
  46. string endPoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); // change to your endpoint
  47. var llmConfig = new AzureOpenAIConfig(
  48. endpoint: endPoint,
  49. deploymentName: "gpt-3.5-turbo-16k", // change to your deployment name
  50. apiKey: apiKey);
  51. #region code_snippet_6
  52. var function = new TypeSafeFunctionCall();
  53. var assistantAgent = new AssistantAgent(
  54. name: "assistant",
  55. llmConfig: new ConversableAgentConfig
  56. {
  57. Temperature = 0,
  58. ConfigList = new[]
  59. {
  60. llmConfig
  61. },
  62. FunctionContracts = new[]
  63. {
  64. function.WeatherReportFunctionContract,
  65. },
  66. },
  67. functionMap: new Dictionary<string, Func<string, Task<string>>>
  68. {
  69. { function.WeatherReportFunctionContract.Name, function.WeatherReportWrapper }, // The function wrapper for the weather report function
  70. });
  71. #endregion code_snippet_6
  72. #region code_snippet_6_1
  73. var response = await assistantAgent.SendAsync("What's the weather in Seattle today? today is 2024-01-01");
  74. response.Should().BeOfType<TextMessage>();
  75. var textMessage = (TextMessage)response;
  76. textMessage.Content.Should().Be("Weather report for Seattle on 2024-01-01 is sunny");
  77. #endregion code_snippet_6_1
  78. }
  79. public async Task OverriderFunctionContractAsync()
  80. {
  81. IAgent agent = default;
  82. IEnumerable<IMessage> messages = new List<IMessage>();
  83. #region overrider_function_contract
  84. var function = new TypeSafeFunctionCall();
  85. var reply = agent.GenerateReplyAsync(messages, new GenerateReplyOptions
  86. {
  87. Functions = new[] { function.WeatherReportFunctionContract },
  88. });
  89. #endregion overrider_function_contract
  90. }
  91. public async Task RegisterFunctionCallMiddlewareAsync()
  92. {
  93. IAgent agent = default;
  94. #region register_function_call_middleware
  95. var function = new TypeSafeFunctionCall();
  96. var functionCallMiddleware = new FunctionCallMiddleware(
  97. functions: new[] { function.WeatherReportFunctionContract },
  98. functionMap: new Dictionary<string, Func<string, Task<string>>>
  99. {
  100. { function.WeatherReportFunctionContract.Name, function.WeatherReportWrapper },
  101. });
  102. agent = agent!.RegisterMiddleware(functionCallMiddleware);
  103. var reply = await agent.SendAsync("What's the weather in Seattle today? today is 2024-01-01");
  104. #endregion register_function_call_middleware
  105. }
  106. public async Task TwoAgentWeatherChatTestAsync()
  107. {
  108. var key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? throw new ArgumentException("AZURE_OPENAI_API_KEY is not set");
  109. var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new ArgumentException("AZURE_OPENAI_ENDPOINT is not set");
  110. var deploymentName = "gpt-35-turbo-16k";
  111. var config = new AzureOpenAIConfig(endpoint, deploymentName, key);
  112. #region two_agent_weather_chat
  113. var function = new TypeSafeFunctionCall();
  114. var assistant = new AssistantAgent(
  115. "assistant",
  116. llmConfig: new ConversableAgentConfig
  117. {
  118. ConfigList = new[] { config },
  119. FunctionContracts = new[]
  120. {
  121. function.WeatherReportFunctionContract,
  122. },
  123. });
  124. var user = new UserProxyAgent(
  125. name: "user",
  126. functionMap: new Dictionary<string, Func<string, Task<string>>>
  127. {
  128. { function.WeatherReportFunctionContract.Name, function.WeatherReportWrapper },
  129. });
  130. await user.InitiateChatAsync(assistant, "what's weather in Seattle today, today is 2024-01-01", 10);
  131. #endregion two_agent_weather_chat
  132. }
  133. }