# [OpenAgents: An Open Platform for Language Agents in the Wild](https://arxiv.org/abs/2310.10634)
English โข
ไธญๆ โข
ๆฅๆฌ่ช โข
ํ๊ตญ์ด
ํ์ฌ์ ์ธ์ด ์์ด์ ํธ ํ๋ ์์ํฌ๋ ๊ฐ๋
์ฆ๋ช
์ฉ ์ธ์ด ์์ด์ ํธ ๊ตฌ์ถ์ ์ฉ์ดํ๊ฒ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ง๋ง, ์ผ๋ฐ ์ฌ์ฉ์์ ์์ด์ ํธ ์ ๊ทผ์ฑ์ ๊ฐ๊ณผํ๋ฉฐ ์์ฉ ์์ค์ ์ค๊ณ์๋ ๊ด์ฌ์ ๋ ๋๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ OpenAgents๋ฅผ ๊ตฌ์ถํ์ผ๋ฉฐ, ์์ผ๋ํ ์ผ์์ํ์์ ์ธ์ด ์์ด์ ํธ๋ฅผ ์ฌ์ฉํ๊ณ ํธ์คํ
ํ๊ธฐ ์ํ ์คํ ํ๋ซํผ์
๋๋ค.
์ฐ๋ฆฌ๋ OpenAgents์ ์ธ ๊ฐ์ง ์์ด์ ํธ๋ฅผ ๊ตฌํํ์ผ๋ฉฐ, ์ด๋ค์ ๋ฌด๋ฃ๋ก ์ ๊ณตํฉ๋๋ค!
1. ๋ฐ์ดํฐ ์์ด์ ํธ๋ Python/SQL๊ณผ ๋ฐ์ดํฐ ๋๊ตฌ๋ก ๋ฐ์ดํฐ ๋ถ์์ ์ํํ ์ ์์ต๋๋ค.
2. ํ๋ฌ๊ทธ์ธ ์์ด์ ํธ๋ ํ๋ฃจ์ 200๊ฐ ์ด์์ ์ผ์ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
3. ์น ์์ด์ ํธ๋ ์์จ์ ์ธ ์น ๋ธ๋ผ์ฐ์ง์ ์ํํฉ๋๋ค.
OpenAgents๋ ๋ฐ์ดํฐ ๋ถ์, ํ๋ฌ๊ทธ์ธ ํธ์ถ, ๋ธ๋ผ์ฐ์ ์ ์ด ๋ฑ์ ChatGPT Plus์ ๋์ผํ๊ฒ ์ํํ ์ ์์ง๋ง, ์๋ ์ด์ ๋ค์ ์ํด ์คํ ์ฝ๋๋ก ์ด๋ฅผ ๊ตฌํํ์์ต๋๋ค.
1. ์ฌ์ด ๋ฐฐํฌ
2. ํ ์คํ
3. ์ฑ ์น ์ ์ ์ธํฐํ์ด์ค
4. ์์ด์ ํธ ๋ฐฉ๋ฒ
5. โฆ
OpenAgents๋ ์น UI๋ฅผ ํตํด ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์์ด์ ํธ ๊ธฐ๋ฅ๊ณผ ์ํธ ์์ฉํ ์ ์๋๋ก ํ์ฌ ์ ์ํ ์๋ต๊ณผ ์ผ๋ฐ์ ์ธ ์ค๋ฅ์ ์ต์ ํ๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ๋์์ ๊ฐ๋ฐ์์ ์ฐ๊ตฌ์๋ค์๊ฒ๋ ๋ก์ปฌ ํ๊ฒฝ์์์ ์ํํ ๋ฐฐํฌ ๊ฒฝํ์ ์ ๊ณตํ์ฌ ํ์ ์ ์ธ ์ธ์ด ์์ด์ ํธ์ ๊ฐ๋ฐ๊ณผ ์ค์ ์ธ๊ณ์์์ ํ๊ฐ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๋ํ ์ฐ๋ฆฌ๋ ์ธ์ด ์์ด์ ํธ์ ์ค์ ์ธ๊ณ์์์ ์ฐ๊ตฌ์ ๊ฐ๋ฐ์ ์ํ ๊ธฐ๋ฐ์ ๋ง๋ จํ๊ณ ์ ํ๋ ๊ฒ์ ๋ํ ํ๋ ์ ๊ณผ, ๊ธฐํ์ ๋ํด ๋ช
ํํ ์ค๋ช
ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๋ฌ๋ถ๋ค์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. ์์ํ๊ธฐ ์ ์, ์ด์์ PR์ ๋ํ [CONTRIBUTING.md](./CONTRIBUTING.md) ๊ฐ์ด๋๋ผ์ธ์ ์ฝ์ด๋ณด์๊ธฐ ๋ฐ๋๋๋ค. ์ด๋ ๊ธฐ์ฌ ๊ณผ์ ์ด ์ํํ๊ณ ํ๋ก์ ํธ์ ๊ธฐ์ค๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๋๋ก ๋์์ ์ค ๊ฒ์
๋๋ค.
## ๐ซ ํธ๋ฌ๋ธ ์ํ
๋ง์ฝ [์จ๋ผ์ธ ๋ฐ๋ชจ](https://chat.xlang.ai)๋ ๋ก์ปฌ ๋ฐฐํฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด, ๋์์ ๋ฐ๊ธฐ ์ํด Discord์ ๊ฐ์
ํด์ฃผ์ธ์. ๋๋ ๊ธฐ๋ฅ์ด๋ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ, [์ด์](https://github.com/xlang-ai/OpenAgents/issues)๋ฅผ ์์ฑํด์ฃผ์ธ์.
## ๐ฅ ๋ด์ค
- **[2023, 10์ 26์ผ]** ์ฌ์ฉ์ 3000๋ช
์ ๋๋ฌํ์ต๋๋ค! ๐ ๋ชจ๋ ์ฌ์ฉ์๋ถ๋ค๊ณผ ๊ธฐ์ฌํด ์ฃผ์ ๋ถ๋ค์๊ฒ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๐ ์๋ฒ์์ ์์์น ๋ชปํ ๋์ ํธ๋ํฝ์ผ๋ก ์ธํด ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ์ธ๋ด์ฌ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ๊ฐ๋ฅํ ๋น ๋ฅธ ์์ผ ๋ด์ ๋์์ ๋๋ฆด ์ ์๊ฒ ์ค๋นํ๊ฒ ์ต๋๋ค!
- **[2023, 10์ 18์ผ]** ์ ํฌ๊ฐ ๋ง๋ [Lemur](https://github.com/OpenLemur/Lemur)๋ฅผ ํ๋ฒ ์ฌ์ฉํด ๋ณด์ธ์. Lemur์ ์ต์ฒจ๋จ (SOTA) ์ธ์ด ์์ด์ ํธ์ด๋ฉฐ ์คํ์์ค ๊ธฐ๋ฐ ๋ชจ๋ธ๋ก, ChatGPT์ 15๊ฐ์ง ์์ด์ ํธ ์์
์์ ๋งค์นญ๋ฉ๋๋ค!
- **[2023, 10์ 17์ผ]** OpenAgents ๋
ผ๋ฌธ์ [์ฌ๊ธฐ](https://arxiv.org/abs/2310.10634)์์ ํ์ธํด๋ณด์ธ์!
- **[2023, 10์ 13์ผ]** ์ ํฌ๋ OpenAgents ํ๋ซํผ์ ์์ด์ ํธ ์ธ ๊ฐ, ์๋ฒ ๋ฐฑ์๋ ๋ฐ ํ๋ก ํธ์๋์ ๋ชจ๋ ์ฝ๋๋ฅผ ๊ณต๊ฐํ์ต๋๋ค! ์์ ๋กญ๊ฒ ๋ก์ปฌ ํ๊ฒฝ์ ์ค์นํ๊ณ OpenAgents๋ฅผ ์ฌ์ฉํด๋ณด์ธ์!
- **[2023, 8์ 17์ผ]** ์ ํฌ ํ๋ซํผ์ ๊ณต์์ ์ผ๋ก 500๋ช
์ ์ฌ์ฉ์์ ๋๋ฌํ์ต๋๋ค! ๐
- **[2023, 8์ 8์ผ]** ์ ํฌ๋ ๋ฐ์ดํฐ, ํ๋ฌ๊ทธ์ธ ๋ฐ ์น ์์ด์ ํธ๋ฅผ ํฌํจํ [OpenAgents ๋ฐ๋ชจ](https://chat.xlang.ai)๋ฅผ ๊ณต๊ฐํ์ต๋๋ค! [ํํ ๋ฆฌ์ผ](https://docs.xlang.ai/category/user-manual)๊ณผ [์ฌ์ฉ ์ฌ๋ก๋ค](https://docs.xlang.ai/category/use-cases)์ ํ์ธํด๋ณด์ธ์!
## ๐ฅ OpenAgents
์ฐ๋ฆฌ๋ ์ค์ ์ธ๊ณ์์ ์ฌ์ฉ๋๋ ์ธ๊ณต์ง๋ฅ ์์ด์ ํธ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. ([OpenAgents ๋ฐ๋ชจ](https://chat.xlang.ai)๋ฅผ ํ์ธํ์ธ์). ๋ค์์ OpenAgents ํ๋ซํผ์ ๋ํ ๊ฐ๋ตํ ๊ฐ์์
๋๋ค. ์์ธํ ๊ฐ๋
๋ฐ ๋์์ธ์ ๋ํ ์์ธํ ๋ด์ฉ์ [๋ฌธ์](https://docs.xlang.ai)์์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค.
### ๋ฐ์ดํฐ ์์ด์ ํธ (Data Agent)
[๋ฐ์ดํฐ ์์ด์ ํธ](https://github.com/xlang-ai/OpenAgents/tree/main/real_agents/data_agent)๋ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์์
์ ์ํด ์ค๊ณ๋ ํฌ๊ด์ ์ธ ๋๊ตฌ ๋ชจ์์
๋๋ค. ๋ฐ์ดํฐ ์์ด์ ํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ๐ **๊ฒ์**: ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค.
- ๐ ๏ธ **์ฒ๋ฆฌ**: ๋ฐ์ดํฐ ํ๋ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ํํ ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค.
- ๐ **์กฐ์**: ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
- ๐ **์๊ฐํ**: ๋ฐ์ดํฐ๋ฅผ ๋ช
ํํ๊ณ ํต์ฐฐ๋ ฅ ์๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ฐ์ดํฐ ์์ด์ ํธ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ ๋ฅ๋ ฅ์ ๊ฐ์ถ๊ณ ์์ด ๋ค์ํ ๋ฐ์ดํฐ ์ค์ฌ ์์
์ ๊ฐ์ํํฉ๋๋ค. ๋ค์ํ [์ฌ์ฉ ์ฌ๋ก๋ค](https://docs.xlang.ai/use-cases/data-agent)์ ํตํด ๋ฐ์ดํฐ ์์ด์ ํธ์ ์ ์ฌ๋ ฅ์ ๋ฐ๊ฒฌํด๋ณด์ธ์.
๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก ์คํฌ๋ฆฐ์ท์ ๋ณด๊ณ ์ถ๋ค๋ฉด ํด๋ฆญํด์ฃผ์ธ์.
### ํ๋ฌ๊ทธ์ธ ์์ด์ ํธ (Plugins Agent)
[ํ๋ฌ๊ทธ์ธ ์์ด์ ํธ](https://github.com/xlang-ai/OpenAgents/tree/main/real_agents/plugins_agent)๋ 200๊ฐ๊ฐ ๋๋ ์ 3์ ํ๋ฌ๊ทธ์ธ๊ณผ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค. ๊ฐ ํ๋ฌ๊ทธ์ธ์ ์ผ์์ํ์ ๋ค์ํ ๋ถ๋ถ์ ํ๋ถํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ ๋ณ๋์์ต๋๋ค. ์ด๋ฌํ ํ๋ฌ๊ทธ์ธ๋ค์ ํ์ฉํ์ฌ ์์ด์ ํธ๋ ์ฌ๋ฌ๋ถ์ด ๋ค์ํ ์์
๊ณผ ํ๋์ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ค๋๋ค.
๐ **ํ๋ฌ๊ทธ์ธ ์์**:
- ๐๏ธ **์ผํ**: Klarna ์ผํ
- โ๏ธ **๋ ์จ**: XWeather
- ๐ฌ **๊ณผํ ํ๊ตฌ**: Wolfram Alpha
#### ๋ค์์ ํ๋ฌ๊ทธ์ธ์ ๋์์ ์ฌ์ฉํ๊ธฐ
์๋์ง์ ํ์ ๋ฐํํ์ธ์! ํ๋ฌ๊ทธ์ธ ์์ด์ ํธ๋ ์ฌ๋ฌ ํ๋ฌ๊ทธ์ธ์ ๋์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ฌํ ๊ณํ์ ์ธ์ฐ๊ณ ๊ณ์๋์? Klook, ํตํ ๋ณํ๊ธฐ, WeatherViz์ ๊ธฐ๋ฅ๋ค์ ๋์์ ์ฌ์ฉํด ๋ณด์ธ์.
#### ์๋ ํ๋ฌ๊ทธ์ธ ์ ํ ๊ธฐ๋ฅ
์๋ ํ๋ฌ๊ทธ์ธ ์ ํ ๊ธฐ๋ฅ์ผ๋ก ์ ํ ๊ณผ์ ์ ๊ฐ์ํํ์ธ์. ์์ด์ ํธ์๊ฒ ํ์์ ๋ง๋ ์ต์์ ํ๋ฌ๊ทธ์ธ์ ์ง๊ด์ ์ผ๋ก ๊ฒ์ํ๊ณ ์ ์ํด ์ฃผ๋๋ก ํด๋ณด์ธ์.
๋ ๋ง์ [์ฌ์ฉ ์ฌ๋ก](https://docs.xlang.ai/use-cases/plugins-agent)๋ฅผ ํตํด ํ๋ฌ๊ทธ์ธ ์์ด์ ํธ์ ์๋ ๋ฐฉ์์ ํ์ธํด๋ณด์ธ์.
๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก ์คํฌ๋ฆฐ์ท์ ๋ณด๊ณ ์ถ๋ค๋ฉด ํด๋ฆญํด์ฃผ์ธ์.
### ์น ์์ด์ ํธ
[์น ์์ด์ ํธ](https://github.com/xlang-ai/OpenAgents/tree/main/real_agents/web_agent)๋ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์น ์ฌ์ดํธ๋ฅผ ์๋์ผ๋ก ํ์ํ๊ณ ํ๊ตฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด ์์ด์ ํธ๋ ์น ๋ธ๋ผ์ฐ์ง ๊ฒฝํ์ ๊ฐ์ํํ์ฌ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ์ํ๋ ์๋ฃ์ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ๋์์ค๋๋ค.
**์น ์์ด์ ํธ๊ฐ ์ํํ ์ ์๋ ์์
๋ค**:
- ๐ **Google ์ง๋ ๋ค๋น๊ฒ์ด์
**: ์ฌํ์ ๊ณํํ๊ณ ์๋์? ์น ์์ด์ ํธ์๊ฒ ์ถ๋ฐ์ง์ ๋ชฉ์ ์ง๋ฅผ ์๋ ค์ฃผ์ธ์. ์น ์์ด์ ํธ๊ฐ Google ์ง๋๋ฅผ ์ด์ฉํ์ฌ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ ์ํด์ค ๊ฒ์
๋๋ค.
- ๐ฆ **Twitter ๊ฒ์๋ฌผ**: ์น ์์ด์ ํธ์ ๋ํ๋ฅผ ๋๋๋ฉฐ Twitter์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ณต์ ํ๊ณ ์ถ๋์? ๋ด์ฉ์ ๋ง์ํด์ฃผ์๋ฉด ์น ์์ด์ ํธ๊ฐ ์์ฝ๊ฒ ํธ์์ ์ฒ๋ฆฌํด๋๋ฆด ๊ฒ์
๋๋ค.
- ๐ **Google Form ์ด์์คํด์ค**: ํ์ฌ๋ ํ๋์ ๋ฑ๋กํด์ผ ํ ํ์๊ฐ ์๋์? Google Form ๋งํฌ์ ํ์ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ณต์ ํด์ฃผ์ธ์. ์น ์์ด์ ํธ๊ฐ ๋์ ์์์ ์์ฑํด๋๋ฆด ๊ฒ์
๋๋ค.
์ด๋ฌํ [์ฌ์ฉ ์ฌ๋ก](https://docs.xlang.ai/use-cases/web-agent)์์ ์น ์์ด์ ํธ์ ์ ์ฌ๋ ฅ์ ํ์ธํด๋ณด์ธ์.
๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก ์คํฌ๋ฆฐ์ท์ ๋ณด๊ณ ์ถ๋ค๋ฉด ํด๋ฆญํด์ฃผ์ธ์.
## ๐ป ๋ก์ปฌ ํธ์คํธ์ ๋ฐฐํฌํ๊ธฐ
OpenAgents ํ๋ซํผ ์ฝ๋๋ฅผ ๋ฐฐํฌํ์ต๋๋ค. ์์ ๋กญ๊ฒ ๋ก์ปฌ ํธ์คํธ์ ๋ฐฐํฌํด๋ณด์ธ์!
๋ค์์ OpenAgents์ ๊ฐ๋ตํ ์์คํ
๋์์ธ์
๋๋ค:
๋ก์ปฌ ํ๊ฒฝ ์ค์ ๋ฐ ๋ก์ปฌ ํธ์คํธ์ ๋ฐฐํฌํ๊ธฐ ์ํด ๋ค์ ํด๋ ๋ฐ README ํ์ผ์ ํ์ธํด ์ฃผ์ธ์:
1. [**๋ฐฑ์๋**](backend/README.md): ํ๋ผ์คํฌ(Flask) ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ ๊ฐ์ ์์ด์ ํธ๋ฅผ ํธ์คํ
ํฉ๋๋ค.
2. [**ํ๋ก ํธ์๋**](frontend/README.md): ํ๋ก ํธ์๋ UI์ WeBot ํฌ๋กฌ ์ต์คํ
์
p.s. : ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด ์ผ๋ถ ์ธ์๋ค์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. 2023๋
10์ 26์ผ ์ด์ ์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์จ ๊ฒฝ์ฐ, ์ต์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ํค ์ด๋ฆ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ด์ ๋ก์ปฌ ์ฑํ
๊ธฐ๋ก์ด ์์ค๋๋ค๋ ์ ์ ์ฐธ๊ณ ํ์ธ์.
## ๐ OpenAgents๋ฅผ ํ์ฅํ๊ธฐ ์ํ ํํ ๋ฆฌ์ผ
### ์ฝ๋ ๊ตฌ์กฐ
OpenAgents๋ฅผ ํ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ ์ ์, OpenAgents์ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ตํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฝ๋ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ต๋๋ค:
```bash
โโโ backend # backend code
โย ย โโโ README.md # backend README for setup
โย ย โโโ api # RESTful APIs, to be called by the frontend
โย ย โโโ app.py # main flask app
โย ย โโโ display_streaming.py # rendering the streaming response
โย ย โโโ kernel_publisher.py # queue for code execution
โย ย โโโ main.py # main entry for the backend
โย ย โโโ memory.py # memory(storage) for the backend
โย ย โโโ schemas.py # constant definitions
โย ย โโโ setup_script.sh # one-click setup script for the backend
โย ย โโโ static # static files, e.g., cache and figs
โย ย โโโ utils # utilities
โโโ frontend # frontend code
โย ย โโโ README.md # frontend README for setup
โย ย โโโ components # React components
โย ย โโโ hooks # custom React hooks
โย ย โโโ icons # icon assets
โย ย โโโ next-env.d.ts # TypeScript declarations for Next.js environment variables
โย ย โโโ next-i18next.config.js # configuration settings for internationalization
โย ย โโโ next.config.js # configuration settings for Next.js
โย ย โโโ package-lock.json # generated by npm that describes the exact dependency tree
โย ย โโโ package.json # manifest file that describes the dependencies
โย ย โโโ pages # Next.js pages
โย ย โโโ postcss.config.js # configuration settings for PostCSS
โย ย โโโ prettier.config.js # configuration settings for Prettier
โย ย โโโ public # static assets
โย ย โโโ styles # global styles
โย ย โโโ tailwind.config.js # configuration settings for Tailwind CSS
โย ย โโโ tsconfig.json # configuration settings for TypeScript
โย ย โโโ types # type declarations
โย ย โโโ utils # utilities or helper functions
โย ย โโโ vitest.config.ts # configuration settings for ViTest
โย ย โโโ webot_extension.zip # Chrome extension for Web Agent
โโโ real_agents # language agents
โโโ adapters # shared components for the three agents to adapt to the backend
โโโ data_agent # data agent implementation
โโโ plugins_agent # plugins agent implementation
โโโ web_agent # web agent implementation
```
์์ ์ฝ๋ ๊ตฌ์กฐ์์๋ `backend/`์ `frontend/`๊ฐ ๋
๋ฆฝ์ ์ด๊ณ ์ง์ ๋ฐฐํฌ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ([์ฌ๊ธฐ](#localhost-deployment)๋ฅผ ๋ณด์ธ์.)
์ด๋ ์์ ํ ์ ์๋ค๋ ์๋ฏธ๊ฐ ์๋, ์ ํต์ ์ธ *ํด๋ผ์ด์ธํธ-์๋ฒ* ์ํคํ
์ฒ๋ฅผ ๋ฐ๋ผ ์ํ๋๋๋ก ๋ฐฑ์๋์ ํ๋ก ํธ์๋๋ฅผ ํ์ฅํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
`real_agents/`๋ "ํ๋์ ์์ด์ ํธ, ํ๋์ ํด๋"๋ก ์ค๊ณ๋์ด ์๋ก์ด ์์ด์ ํธ๋ฅผ ์ฝ๊ฒ ํ์ฅํ ์ ์๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
"real agents"๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ ์ด์ ๋ ๊ฐ๋
์ ์ธ ์ธ์ด ์์ด์ ํธ ๋ถ๋ถ๋ฟ๋ง ์๋๋ผ ์ธ์ด ์์ด์ ํธ์ ๋ฐฑ์๋ ๊ฐ์ ๊ฐ๊ทน์ ์ฑ์ฐ๊ธฐ ์ํ ๋ด์ฉ๋ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์๋ฅผ ๋ค์ด, `adapters/` ํด๋์๋ ์คํธ๋ฆผ ํ์ฑ, ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋ฉ๋ชจ๋ฆฌ, ์ฝ๋ฐฑ ๋ฑ๊ณผ ๊ฐ์ ๊ณต์ ์ด๋ํฐ ์ปดํฌ๋ํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๊ฐ๋
๊ณผ ๊ตฌํ ์ค๊ณ์ ๋ํ ์์ธํ ๋ด์ฉ์ [๋
ผ๋ฌธ](https://arxiv.org/abs/2310.10634)์ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค.
๋ํ, ์ฐ๋ฆฌ๋ ์ค์ ์์ด์ ํธ๋ฅผ ๊ตฌ์ถํ๋๋ฐ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ณตํด ์ค [LangChain](https://github.com/langchain-ai/langchain)์๊ฒ ๊ฐ์ฌ์ ๋ง์์ ์ ํฉ๋๋ค.
### ์๋ก์ด ์์ด์ ํธ๋ฅผ ํ์ฅํ๊ธฐ
์ ํฌ๊ฐ ์ ๊ณตํ๋ ์ธ ๊ฐ์ง์ ์์ด์ ํธ ๋ง๊ณ ๋ ๋ค๋ฅธ ์๋ก์ด ์์ด์ ํธ๋ฅผ ๊ตฌ์ถํ๊ณ ์ถ์ผ์๋ค๋ฉด ์๋ ์คํ
์ ๋ฐ๋ผ ์ฃผ์ธ์:
- ์๋ก์ด ์์ด์ ํธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ด์ ์์ด์ ํธ๊ฐ ๊ตฌํ๋ `real_agents/` ํด๋๋ฅผ ์ฐธ์กฐํ๊ณ , ์๋ก์ด ํด๋๋ฅผ ์์ฑํ์ญ์์ค.
- ์๋ก์ด ํด๋์ ์๋ ์์ด์ ํธ ๋ก์ง์ ๊ตฌํํ์ญ์์ค. ํ์ํ ๊ฒฝ์ฐ `adapters/` ํด๋ ๋ด์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ๋จผ์ , ์๋ก์ด ์์ด์ ํธ๋ฅผ ์ํ ์ฑํ
API๋ฅผ ์ ์ํ๊ธฐ ์ํด `backend/api/` ํด๋์ `chat_.py` ํ์ผ์ ์ถ๊ฐํ์ธ์. ์ด ํ์ผ์ ํ๋ก ํธ์๋์์ ํธ์ถ๋ ๊ฒ์
๋๋ค.
- ํ์ํ ๊ฒฝ์ฐ, `backend/schemas.py`ํ์ผ์ ์๋ก์ด ์์๋ฅผ ๋ฑ๋กํ์ธ์.
- ํ๋ก ํธ์๋์์ ์๋ก์ด OpenAgentID๋ฅผ ์ถ๊ฐํ๊ณ , ์ด์ ํด๋นํ๋ API๋ฅผ `frontend/utils/app/api.ts`์ `frontend/utils/app/const.ts`์ ์ถ๊ฐํด์ฃผ์ธ์.
- ํ์ํ ๊ฒฝ์ฐ, `frontend/components/Chat/Chat.tsx`์ `frontend/components/Chat/ChatMessage.tsx`์์ ์์ด์ ํธ UI๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
- ๋ก์ปฌ ํธ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ ์๋ก์ด ์์ด์ ํธ๋ฅผ ํ
์คํธํด๋ณด์ธ์.
์ฐธ๊ณ : ์๋ก์ด ๋ฐ์ดํฐ ์ ํ(์: ํ
์คํธ, ์ด๋ฏธ์ง, ํ
์ด๋ธ ๋ฐ JSON ์ด์ธ์ ์ ํ)์ ๊ฒฝ์ฐ, ๋ฐฑ์๋์ `display_streaming.py`์์ ํด๋น ๋ฐ์ดํฐ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ก์ง์ ๊ตฌํํ๊ณ ์๋ก์ด ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ถ๊ฐํด์ผ ํ ์๋ ์์ต๋๋ค.
### ์๋ก์ด LLM์ ํ์ฅํ๊ธฐ
LLM(Large Language Model)์ ์์ด์ ํธ ๋ฐฑ๋ณธ์ผ๋ก ํ์ฅํ๋ ๊ฒ์, LLM์ด ์ด๋ฏธ ํธ์คํ
๋์ด API๋ฅผ ํตํด ํธ์ถ๋ ์ ์๋ ๊ฒฝ์ฐ ๋์ฑ ๊ฐ๋จํด์ง๋๋ค. `backend/api/language_model.py`์์ ์๋ก์ด ๋ชจ๋ธ์ ๋ฑ๋กํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. lemur-chat์ ์ฐธ๊ณ ํ๋ฉด ํ
ํ๋ฆฟ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
LLM์ด ์์ง ํธ์คํ
๋์ง ์์ ๊ฒฝ์ฐ, LLM์ ์๋ก ๋ฐฐํฌํ๊ณ API๋ก ๋
ธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํํ ๋ฆฌ์ผ์ด [์ฌ๊ธฐ]()์ ์์ต๋๋ค. (LLM ํธ์คํ
์ todo).
### ์๋ก์ด ๋๊ตฌ๋ฅผ ํ์ฅํ๊ธฐ
ํ๋ฌ๊ทธ์ธ ์์ด์ ํธ์ ์๋ ๋๊ตฌ๋ฅผ ํ์ฅํด๋ณด๊ณ ์ถ๋ค๋ฉด, ์๋ ์คํ
์ ๋ฐ๋ฅด์ธ์:
- `real_agents/plugins_agent/plugins/`์ ์ด๋ฏธ ๊ตฌ์ถ๋ ํ๋ฌ๊ทธ์ธ๋ค์ ์ฐธ๊ณ ํ๊ณ , ๋๊ตฌ์ ๋ํ ์๋ก์ด ํด๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์๋ก์ด ํด๋์ ๋๊ตฌ ๋ก์ง์ ๊ตฌํํด์ฃผ์ธ์. ๋๊ตฌ๊ฐ ์ธ์๋๊ธฐ ์ํด `ai-plugin.json`๊ณผ `openapi.yaml` ํ์ผ์ด ํ์์ ์
๋๋ค(์ด๋ ์๋์ผ๋ก ์์ฑํ๋ ๋์ ๋ค๋ฅธ ์์๋ฅผ ๋ฐ๋ผ์ LLM์ด ์์ฑํ ์ ์์ต๋๋ค). ๋ํ `paths/` ํด๋๋ ์ค์ ๋๊ตฌ API ํธ์ถ์ ์ํ ๊ฒฝ๋ก์
๋๋ค.
- `real_agents/plugins_agent/plugin_names.py`์ ์๋ก์ด ๋๊ตฌ ์ด๋ฆ์ ๋ฑ๋กํด์ฃผ์ธ์.
## ๐ ๊ธฐ์ฌํ๊ธฐ
๊ฐ์ฌํ๊ฒ๋ ์คํ ์์ค ์ปค๋ฎค๋ํฐ์ธ [LangChain](https://github.com/langchain-ai/langchain), [ChatBot UI](https://github.com/mckaywrigley/chatbot-ui), [Taxy.ai browser extension](https://github.com/TaxyAI/browser-extension) ๋ฑ์ ๋
ธ๋ ฅ ๋๋ถ์ ์ ํฌ๋ ์ธํฐํ์ด์ค ํ๋กํ ํ์
์ ๋ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌ์ถํ ์ ์์์ต๋๋ค.
์ ํฌ๋ ์ฌ๋ฌ๋ถ๋ค์ ๊ธฐ์ฌ์ ์กฐ์ธ์ ํ์ํ๋ฉฐ, ํจ๊ป ๋ ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์ด๋๊ฐ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค! ๊ธฐ์ฌํ๊ณ ์ถ์ผ์๋ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ์ฃผ์ธ์:
- **1๋จ๊ณ**: ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ด๋ ๊ฐ์ ์ฌํญ์ ์ถ๊ฐํ๊ณ ์ถ๊ฑฐ๋ ๊ฒฝํ ์ค์ ๋ฌธ์ ๋ฅผ ๋ง์ฃผ์น๋ฉด [์ด์](https://github.com/xlang-ai/OpenAgents/issues)๋ฅผ ๊ฒ์ํด์ฃผ์ธ์. ๋ํ [์ด์ ํ
ํ๋ฆฟ](https://github.com/xlang-ai/OpenAgents/blob/main/CONTRIBUTING.md)์ ๋ฐ๋ผ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ด์๋ ํด๋น ์์น์์ ๋
ผ์๋๊ณ ํ ๋น๋ ๊ฒ์
๋๋ค.
- **2๋จ๊ณ**: ์ด์๊ฐ ํ ๋น๋๋ฉด [ํ ๋ฆฌํ์คํธ ํ
ํ๋ฆฟ](https://github.com/xlang-ai/OpenAgents/blob/main/CONTRIBUTING.md)์ ๋ฐ๋ผ [ํ ๋ฆฌํ์คํธ](https://github.com/xlang-ai/OpenAgents/pulls)๋ฅผ ์์ฑํ์ฌ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. ๋ํ ์ด๋ ค์๋ ์ด์๋ฅผ ์์ฒญํ ์๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํจ๊ป OpenAgents๋ฅผ ๋์ฑ ๋ฐ์ ์ํฌ ์ ์์ต๋๋ค!
- **3๋จ๊ณ**: PR์ ๊ฒํ ์ ๋
ผ์ ์ดํ์ ๋ณํฉ๋๊ฑฐ๋ ๋ฐ๋ณต๋ ๊ฒ์
๋๋ค. ๊ธฐ์ฌํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
์์ํ๊ธฐ ์ ์, [์ฌ๊ธฐ](https://github.com/xlang-ai/OpenAgents/blob/main/CONTRIBUTING.md)๋ฅผ ํ์ธํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
## ๐ ๋ฌธ์ํ
์ ์ฒด ๋ฌธ์์ ๋ํด์๋ [์ฌ๊ธฐ](https://docs.xlang.ai)๋ฅผ ํ์ธํด์ฃผ์ธ์. ๋ฌธ์๋ ๋ฐ๋ชจ ๋ณ๊ฒฝ ๋ฐ ์ฝ๋ ๋ฆด๋ฆฌ์ค์ ํจ๊ป ์ต์ ํ๋ ์์ ์
๋๋ค.
## ๐งโ์ด๋ค ๋ถ๋ค์ด ์ฐธ์ฌํ๊ณ ์๋์?
### ๊ธฐ์ ๋ฆฌ๋
### ๊ณต๋ ๋ฆฌ๋ ๊ธฐ์ฌ์
### ์ฃผ์ ๊ธฐ์ฌ์
### ์์คํ ๊ธฐ์ฌ์
### ๊ฐ์ฌ์ ๋ง (์ฝ๋๋ฅผ ๋์ด์)
OpenAgents์ ๋ง์ ๊ธฐ์ฌ๋ฅผ ํด์ฃผ์ [Ziyi Huang](https://www.joanna-ziyi-huang.com/), [Roxy Rong](https://www.linkedin.com/in/roxyrong/), [Haotian Li](https://haotian-li.com/), [Xingbo Wang](https://andy-xingbowang.com/), [Jansen Wong](https://www.linkedin.com/in/jansenwong/), ๊ทธ๋ฆฌ๊ณ [Chen Henry Wu](https://chenwu.io/) ๊ป ์ง์ฌ์ผ๋ก ๊ฐ์ฌ์ ๋ง์์ ์ ํฉ๋๋ค. ์ด๋ถ๋ค์ ์ ๋ฌธ์ฑ๊ณผ ํต์ฐฐ๋ ฅ์ ์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ์ต๋๋ค!
### ์คํ์์ค ๊ธฐ์ฌ์
๊ธฐ์ฌํด ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
## ์ธ์ฉ
๋ง์ฝ ์ฌ๋ฌ๋ถ์๊ฒ ์ฐ๋ฆฌ์ ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์ธ์ฉํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค:
```
@misc{OpenAgents,
title={OpenAgents: An Open Platform for Language Agents in the Wild},
author={Tianbao Xie and Fan Zhou and Zhoujun Cheng and Peng Shi and Luoxuan Weng and Yitao Liu and Toh Jing Hua and Junning Zhao and Qian Liu and Che Liu and Leo Z. Liu and Yiheng Xu and Hongjin Su and Dongchan Shin and Caiming Xiong and Tao Yu},
year={2023},
eprint={2310.10634},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
```
## ๊ฐ์ฌ์ ๋ง
์ ํฌ์๊ฒ ์ด ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ์ํด ์ฐ๊ตฌ ๊ธฐ๊ธ์ ์ ๊ณตํด ์ค Google Research, Amazon AWS, ๊ทธ๋ฆฌ๊ณ Salesforce Research์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
## โญ๏ธ Star History
[![Star History Chart](https://api.star-history.com/svg?repos=xlang-ai/OpenAgents&type=Date)](https://github.com/xlang-ai/OpenAgents/stargazers)
OpenAgents์๊ฒ โญ๏ธ๋ฅผ ์ฃผ๋ ๊ฒ์ ๊ทธ๊ฒ์ ๋์ฑ ๋น๋๊ฒ ๋ง๋ค๊ณ ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ํํ์ ์ฃผ๋ ๊ฒ์
๋๋ค.