Skip to content

Commit

Permalink
Add blog post for open ai assistants (microsoft#638)
Browse files Browse the repository at this point in the history
* Add outline + update author list

* Update blog

* Fix typo

* Update website/blog/2023-11-13-OAI-assistants/index.mdx

Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>

* Update website/blog/2023-11-13-OAI-assistants/index.mdx

Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>

* Update website/blog/2023-11-13-OAI-assistants/index.mdx

Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>

* Add version number

* Add acknowledgements

* Update

---------

Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>
  • Loading branch information
gagb and qingyun-wu committed Nov 13, 2023
1 parent 769222d commit e34e354
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
117 changes: 117 additions & 0 deletions website/blog/2023-11-13-OAI-assistants/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---
title: AutoGen Meets GPTs
authors: gagb
tags: [openai-assistant]
---

![OpenAI Assistant](img/teaser.jpg)
<p align="center"><em>AutoGen enables collaboration among multiple ChatGPTs for complex tasks.</em></p>


## 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.
6 changes: 6 additions & 0 deletions website/blog/authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e34e354

Please sign in to comment.