diff --git a/website/blog/2023-11-13-OAI-assistants/img/teaser.jpg b/website/blog/2023-11-13-OAI-assistants/img/teaser.jpg new file mode 100644 index 00000000000..ac22cd3c05b Binary files /dev/null and b/website/blog/2023-11-13-OAI-assistants/img/teaser.jpg differ diff --git a/website/blog/2023-11-13-OAI-assistants/index.mdx b/website/blog/2023-11-13-OAI-assistants/index.mdx new file mode 100644 index 00000000000..7c1ff13e0d2 --- /dev/null +++ b/website/blog/2023-11-13-OAI-assistants/index.mdx @@ -0,0 +1,117 @@ +--- +title: AutoGen Meets GPTs +authors: gagb +tags: [openai-assistant] +--- + +![OpenAI Assistant](img/teaser.jpg) +

AutoGen enables collaboration among multiple ChatGPTs for complex tasks.

+ + +## TLDR +OpenAI assistants are now integrated into AutoGen via [`GPTAssistantAgent`](https://github.com/microsoft/autogen/blob/main/autogen/agentchat/contrib/gpt_assistant_agent.py). +This enables multiple OpenAI assistants, which form the backend of the now popular GPTs, to collaborate and tackle complex tasks. +Checkout example notebooks for reference: +* [Basic example](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_twoagents_basic.ipynb) +* [Code interpreter](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_code_interpreter.ipynb) +* [Function calls](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_oai_assistant_function_call.ipynb) + + +## Introduction +Earlier last week, OpenAI introduced [GPTs](https://openai.com/blog/introducing-gpts), giving users ability to create custom ChatGPTs tailored for them. +*But what if these individual GPTs could collaborate to do even more?* +Fortunately, because of AutoGen, this is now a reality! +AutoGen has been pioneering agents and supporting [multi-agent workflows](https://aka.ms/autogen-pdf) since earlier this year, and now (starting with version 0.2.0b5) we are introducing compatibility with the [Assistant API](https://openai.com/blog/introducing-gpts), which is currently in beta preview. + +To accomplish this, we've added a new (experimental) agent called the `GPTAssistantAgent` that +lets you seamlessly add these new OpenAI assistants into AutoGen-based multi-agent workflows. +This integration shows great potential and synergy, and we plan to continue enhancing it. + +## Installation + +```bash +pip install pyautogen +``` + +## Basic Example + +Here's a basic example that uses a `UserProxyAgent` to allow an interface +with the `GPTAssistantAgent`. + + +First, import the new agent and setup `config_list`: +```python +from autogen import config_list_from_json +from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent +from autogen import UserProxyAgent + +config_list = config_list_from_json("OAI_CONFIG_LIST") +``` + +Then simply define the OpenAI assistant agent and give it the task! +```python +# creates new assistant using Assistant API +gpt_assistant = GPTAssistantAgent( + name="assistant", + llm_config={ + "config_list": config_list, + "assistant_id": None + }) + +user_proxy = UserProxyAgent(name="user_proxy", + code_execution_config={ + "work_dir": "coding" + }, + human_input_mode="NEVER") + +user_proxy.initiate_chat(gpt_assistant, message="Print hello world") +``` + +`GPTAssistantAgent` supports both creating new OpenAI assistants or reusing existsing assistants +(e.g, by providing an `assistant_id`). + + +## Code Interpreter Example + +`GPTAssistantAgent` allows you to specify an OpenAI tools +(e.g., function calls, code interpreter, etc). The example below enables an assistant + that can use OpenAI code interpreter to solve tasks. + +```python +# creates new assistant using Assistant API +gpt_assistant = GPTAssistantAgent( + name="assistant", + llm_config={ + "config_list": config_list, + "assistant_id": None, + "tools": [ + { + "type": "code_interpreter" + } + ], + }) + +user_proxy = UserProxyAgent(name="user_proxy", + code_execution_config={ + "work_dir": "coding" + }, + human_input_mode="NEVER") + +user_proxy.initiate_chat(gpt_assistant, message="Print hello world") +``` + +Checkout more examples [here](https://github.com/microsoft/autogen/tree/main/notebook). + +## Limitations and Future Work + +- Group chat managers using GPT assistant are pending. +- GPT assistants with multimodal capabilities haven't been released yet but we are committed to support them. + +## Acknowledgements + +`GPTAssistantAgent` was made possible through collaboration with +[@IANTHEREAL](https://github.com/IANTHEREAL), +[Jiale Liu](https://leoljl.github.io), +[Yiran Wu](https://github.com/kevin666aa), +[Qingyun Wu](https://qingyun-wu.github.io/), +[Chi Wang](https://www.microsoft.com/en-us/research/people/chiw/), and many other AutoGen maintainers. diff --git a/website/blog/authors.yml b/website/blog/authors.yml index cf77c02e363..f660a25f4a2 100644 --- a/website/blog/authors.yml +++ b/website/blog/authors.yml @@ -40,6 +40,12 @@ beibinli: url: https://github.com/beibinli image_url: https://github.com/beibinli.png +gagb: + name: Gagan Bansal + title: Senior Researcher at Microsoft Research AI Frontier + url: https://www.linkedin.com/in/gagan-bansal/ + image_url: https://github.com/gagb.png + jieyuz2: name: Jieyu Zhang title: PhD student at University of Washington