mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-23 17:01:35 +00:00

* nbqa adedd to pre-commit, added black and ruff for notebooks * polishing * polishing * polishing
147 lines
6.0 KiB
Plaintext
147 lines
6.0 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## RAG OpenAI Assistants in AutoGen\n",
|
|
"\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."
|
|
]
|
|
},
|
|
{
|
|
"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 UserProxyAgent, config_list_from_json\n",
|
|
"from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent\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\": [{\"type\": \"retrieval\"}],\n",
|
|
" \"file_ids\": [\"file-CmlT0YKLB3ZCdHmslF9FOv69\"]\n",
|
|
" # add id of an existing file in your openai account\n",
|
|
" # in this case I added the implementation of conversable_agent.py\n",
|
|
"}\n",
|
|
"\n",
|
|
"gpt_assistant = GPTAssistantAgent(\n",
|
|
" name=\"assistant\", instructions=\"You are adapt at question answering\", llm_config=llm_config\n",
|
|
")\n",
|
|
"\n",
|
|
"user_proxy = UserProxyAgent(\n",
|
|
" name=\"user_proxy\",\n",
|
|
" code_execution_config=False,\n",
|
|
" is_termination_msg=lambda msg: \"TERMINATE\" in msg[\"content\"],\n",
|
|
" human_input_mode=\"ALWAYS\",\n",
|
|
")\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
|
|
}
|