From 6f7f642d9d9f3630b7ce4acff0eae4cf8bbed624 Mon Sep 17 00:00:00 2001 From: gagb Date: Wed, 15 Nov 2023 22:59:07 +0000 Subject: [PATCH 1/3] Add RAG gptassistant example notebook --- .../agentchat_oai_assistant_retrieval.ipynb | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 notebook/agentchat_oai_assistant_retrieval.ipynb diff --git a/notebook/agentchat_oai_assistant_retrieval.ipynb b/notebook/agentchat_oai_assistant_retrieval.ipynb new file mode 100644 index 00000000000..f47b452a051 --- /dev/null +++ b/notebook/agentchat_oai_assistant_retrieval.ipynb @@ -0,0 +1,149 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OpenAI Assistants in AutoGen\n", + "\n", + "This notebook shows a very basic example of the [`GPTAssistantAgent`](https://github.com/microsoft/autogen/blob/main/autogen/agentchat/contrib/gpt_assistant_agent.py#L16C43-L16C43), which is an experimental AutoGen agent class that leverages the [OpenAI Assistant API](https://platform.openai.com/docs/assistants/overview) for conversational capabilities, working with\n", + "`UserProxyAgent` in AutoGen." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "assistant_id was None, creating a new assistant\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", + "\n", + "What is the name of the class of agents I gave you?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "The class of agents provided in the file is called `ConversableAgent`.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", + "\n", + "What does it do?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "The `ConversableAgent` class is designed as a generic conversable agent that can be configured to act either as an assistant or user proxy. When it receives a message, it automatically generates and sends a reply unless the message is a termination message. It features a method to initiate a chat with another agent and can have its auto-reply behavior adjusted by overriding the `generate_reply` method.\n", + "\n", + "Here are some specific functionalities and mechanisms included in the `ConversableAgent` class:\n", + "\n", + "- It can process received messages and decide whether or not a reply is necessary or requested.\n", + "- It can reset consecutive auto-reply counters and clear chat history when starting a new conversation.\n", + "- It allows initiating chats either synchronously or asynchronously with the ability to pass context information and control chattiness.\n", + "- It has the ability to register reply functions with specific triggers and order them based on preference.\n", + "- The class supports setting a maximum number of consecutive auto-replies, after which it can prompt for human input based on configured criteria (e.g., always, on termination, or never).\n", + "- The auto-reply trigger mechanism can be finely controlled by associating reply functions with triggers such as instances of particular classes, specific strings, or custom callable conditions.\n", + "\n", + "This class provides an extensible framework for creating bots or agents that can interact in a chat-like context, with custom behavior that developers can tailor to specific applications.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> NO HUMAN INPUT RECEIVED.\u001b[0m\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "It seems that your request was incomplete. Could you please provide more information or clarify your request?\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Permanently deleting assistant...\n" + ] + } + ], + "source": [ + "import logging\n", + "import os\n", + " \n", + "from autogen import config_list_from_json\n", + "from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent\n", + "from autogen import UserProxyAgent\n", + "\n", + "logger = logging.getLogger(__name__)\n", + "logger.setLevel(logging.WARNING)\n", + "\n", + "assistant_id = os.environ.get(\"ASSISTANT_ID\", None)\n", + "\n", + "config_list = config_list_from_json(\"OAI_CONFIG_LIST\")\n", + "llm_config = {\n", + " \"config_list\": config_list,\n", + " \"assistant_id\": assistant_id,\n", + " \"tools\": [\n", + " {\n", + " \"type\": \"retrieval\"\n", + " }\n", + " ],\n", + " \"file_ids\": [\"file-CmlT0YKLB3ZCdHmslF9FOv69\"] \n", + " # add id of an existing file our openai account\n", + " # in this case I added the implementation of conversable_agent.py\n", + "}\n", + "\n", + "gpt_assistant = GPTAssistantAgent(name=\"assistant\",\n", + " instructions=\"You are adapt at question answering\",\n", + " llm_config=llm_config)\n", + "\n", + "user_proxy = UserProxyAgent(name=\"user_proxy\",\n", + " code_execution_config=False,\n", + " is_termination_msg=lambda msg: \"TERMINATE\" in msg[\"content\"],\n", + " human_input_mode=\"ALWAYS\")\n", + "user_proxy.initiate_chat(gpt_assistant, message=\"What is the name of the class of agents I gave you?\")\n", + "\n", + "gpt_assistant.delete_assistant()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 2ea0c2a17813e502cff55effd8a205773a2c9c69 Mon Sep 17 00:00:00 2001 From: Qingyun Wu Date: Thu, 16 Nov 2023 11:34:47 -0500 Subject: [PATCH 2/3] add notebook links --- website/docs/Examples/AgentChat.md | 1 + website/docs/Use-Cases/agent_chat.md | 1 + 2 files changed, 2 insertions(+) diff --git a/website/docs/Examples/AgentChat.md b/website/docs/Examples/AgentChat.md index c8cdc630be3..c4e8bc08a80 100644 --- a/website/docs/Examples/AgentChat.md +++ b/website/docs/Examples/AgentChat.md @@ -44,4 +44,5 @@ Links to notebook examples: - Hello-World Chat with OpenAi Assistant in AutoGen - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_twoagents_basic.ipynb) - Chat with OpenAI Assistant using Function Call - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_function_call.ipynb) - Chat with OpenAI Assistant with Code Interpreter - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_code_interpreter.ipynb) + - Chat with OpenAI Assistant with Retrieval Augmentation - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_retrieval.ipynb) - OpenAI Assistant in a Group Chat - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_groupchat.ipynb) diff --git a/website/docs/Use-Cases/agent_chat.md b/website/docs/Use-Cases/agent_chat.md index 3c184db5ce1..a9eb21b92dd 100644 --- a/website/docs/Use-Cases/agent_chat.md +++ b/website/docs/Use-Cases/agent_chat.md @@ -118,6 +118,7 @@ The figure below shows six examples of applications built using AutoGen. - Hello-World Chat with OpenAi Assistant in AutoGen - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_twoagents_basic.ipynb) - Chat with OpenAI Assistant using Function Call - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_function_call.ipynb) - Chat with OpenAI Assistant with Code Interpreter - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_code_interpreter.ipynb) + - Chat with OpenAI Assistant with Retrieval Augmentation - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_retrieval.ipynb) - OpenAI Assistant in a Group Chat - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_groupchat.ipynb) ## For Further Reading From a12b07d63eae6da8a986c119c7e12a4422b87e09 Mon Sep 17 00:00:00 2001 From: gagb Date: Thu, 16 Nov 2023 16:49:31 +0000 Subject: [PATCH 3/3] Update notebook md --- notebook/agentchat_oai_assistant_retrieval.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notebook/agentchat_oai_assistant_retrieval.ipynb b/notebook/agentchat_oai_assistant_retrieval.ipynb index f47b452a051..82430507849 100644 --- a/notebook/agentchat_oai_assistant_retrieval.ipynb +++ b/notebook/agentchat_oai_assistant_retrieval.ipynb @@ -4,9 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## OpenAI Assistants in AutoGen\n", + "## RAG OpenAI Assistants in AutoGen\n", "\n", - "This notebook shows a very basic example of the [`GPTAssistantAgent`](https://github.com/microsoft/autogen/blob/main/autogen/agentchat/contrib/gpt_assistant_agent.py#L16C43-L16C43), which is an experimental AutoGen agent class that leverages the [OpenAI Assistant API](https://platform.openai.com/docs/assistants/overview) for conversational capabilities, working with\n", + "This notebook shows an example of the [`GPTAssistantAgent`](https://github.com/microsoft/autogen/blob/main/autogen/agentchat/contrib/gpt_assistant_agent.py#L16C43-L16C43) with retrieval augmented generation. `GPTAssistantAgent` is an experimental AutoGen agent class that leverages the [OpenAI Assistant API](https://platform.openai.com/docs/assistants/overview) for conversational capabilities, working with\n", "`UserProxyAgent` in AutoGen." ] },