Created
September 22, 2024 04:05
-
-
Save anpigon/43585331f8fef28314faf828727f4c2e to your computer and use it in GitHub Desktop.
Autogen에서 그룹챗 대화 방식 구현하기
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Autogen에서 그룹챗 대화 방식 구현하기" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Note: you may need to restart the kernel to use updated packages.\n" | |
] | |
} | |
], | |
"source": [ | |
"%pip install -U -q pyautogen" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import os\n", | |
"from dotenv import load_dotenv\n", | |
"\n", | |
"load_dotenv()\n", | |
"\n", | |
"from autogen import ConversableAgent, GroupChat" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 55, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"llm_config = {\n", | |
" \"config_list\": [\n", | |
" {\n", | |
" \"model\": \"google/gemini-flash-1.5-exp\",\n", | |
" \"base_url\": \"https://openrouter.ai/api/v1\",\n", | |
" \"api_key\": os.environ[\"OPENROUTER_API_KEY\"],\n", | |
" }\n", | |
" ]\n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 56, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 주제 선정 에이전트: Topic Agent\n", | |
"topic_agent = ConversableAgent(\n", | |
" name=\"Topic_Agent\",\n", | |
" system_message=\"\"\"\"당신은 사회적으로 중요한 토론 주제를 제시하는 역할입니다.\n", | |
" 현재 시점에서 논의할 가치가 있는 사회적 이슈를 선정하세요.\"\"\",\n", | |
" llm_config=llm_config,\n", | |
" human_input_mode=\"NAVER\", # 사람의 개입없이 에이전트가 자동으로 작업을 수행하도록 설정.\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 경제학자 에이전트: Economist Agent\n", | |
"economist_agent = ConversableAgent(\n", | |
" name=\"Economist_Agent\",\n", | |
" system_message=\"\"\"\"당신은 경제학자입니다.\n", | |
" 주어진 주제에 대해 경제학적 관점에서 분석하고 의견을 제시하세요.\"\"\",\n", | |
" llm_config=llm_config,\n", | |
" human_input_mode=\"NAVER\",\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 58, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 사회학자 에이전트: Sociologist Agent\n", | |
"sociologist_agent = ConversableAgent(\n", | |
" name=\"Sociologist_Agent\",\n", | |
" system_message=\"\"\"당신은 사회학자입니다.\n", | |
" 주어진 주제와 이전 의견을 바탕으로 사회적 관점에서 분석하고 의견을 제시하세요.\"\"\",\n", | |
" llm_config=llm_config,\n", | |
" human_input_mode=\"NAVER\",\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 59, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 환경 전문가 에이전트: Environmental Agent\n", | |
"environmental_agent = ConversableAgent(\n", | |
" name=\"Environmental_Agent\",\n", | |
" system_message=\"\"\"당신은 환경 전문가입니다.\n", | |
" 주어진 주제와 이전 의견을 바탕으로 환경적 관점에서 분석하고 의견을 제시하세요.\"\"\",\n", | |
" llm_config=llm_config,\n", | |
" human_input_mode=\"NAVER\",\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 윤리학자 에이전트: Ethical Agent\n", | |
"ethical_agent = ConversableAgent(\n", | |
" name=\"Ethical_Agent\",\n", | |
" system_message=\"\"\"당신은 윤리학자입니다.\n", | |
" 주어진 주제와 이전 의견을 바탕으로 윤리적 관점에서 분석하고 의견을 제시하세요.\"\"\",\n", | |
" llm_config=llm_config,\n", | |
" human_input_mode=\"NAVER\",\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"group_chat = GroupChat(\n", | |
" agents=[\n", | |
" topic_agent,\n", | |
" economist_agent,\n", | |
" sociologist_agent,\n", | |
" environmental_agent,\n", | |
" ethical_agent,\n", | |
" ],\n", | |
" messages=[],\n", | |
" max_round=6,\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 62, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from autogen import GroupChatManager\n", | |
"\n", | |
"group_chat_manager = GroupChatManager(\n", | |
" groupchat=group_chat,\n", | |
" llm_config=llm_config,\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 63, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\u001b[33mTopic_Agent\u001b[0m (to chat_manager):\n", | |
"\n", | |
"AI 윤리 문제에 대해 대화해 주세요. AI의 발전과 관련된 윤리적 쟁점, 책임, 그리고 사회적 영향에 대해 논의해보세요.\n", | |
"\n", | |
"--------------------------------------------------------------------------------\n", | |
"[autogen.oai.client: 09-22 03:58:07] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[32m\n", | |
"Next speaker: Topic_Agent\n", | |
"\u001b[0m\n", | |
"\u001b[31m\n", | |
">>>>>>>> USING AUTO REPLY...\u001b[0m\n", | |
"[autogen.oai.client: 09-22 03:58:15] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[33mTopic_Agent\u001b[0m (to chat_manager):\n", | |
"\n", | |
"## AI 윤리: 인공지능 시대의 필수적인 담론\n", | |
"\n", | |
"**서론:**\n", | |
"\n", | |
"인공지능(AI) 기술은 급속도로 발전하며 우리 삶의 거의 모든 측면에 영향을 미치고 있습니다. 의료, 교육, 금융, 엔터테인먼트 등 다양한 분야에서 AI는 효율성을 증대시키고 새로운 가능성을 열어주고 있습니다. 하지만 이러한 긍정적인 면모와 함께 AI의 발전은 우리 사회에 다양한 윤리적 딜레마를 야기하며, 이는 더 이상 간과할 수 없는 중요한 논의 주제가 되었습니다.\n", | |
"\n", | |
"**AI 윤리의 핵심 쟁점:**\n", | |
"\n", | |
"AI 윤리 문제는 AI 개발 및 활용 과정에서 발생하는 다양한 윤리적 딜레마를 포괄합니다. \n", | |
"\n", | |
"* **편향과 차별:** AI 알고리즘은 학습 데이터에 기반하여 작동하기 때문에, 데이터 자체에 내재된 편향이 AI 시스템에 반영될 수 있습니다. 이는 특정 집단에 대한 차별이나 불공정한 결과를 초래할 수 있으며, 사회적 불평등을 심화시킬 위험성을 내포합니다. 예를 들어, 채용 과정에서 AI를 활용할 때 특정 성별이나 인종에 대한 편향이 존재한다면, 이는 공정한 채용 기회를 저해할 수 있습니다.\n", | |
"* **책임과 투명성:** AI 시스템이 복잡해짐에 따라, 오류 발생 시 책임 소재를 명확히 규명하기 어려워지고 있습니다. AI가 스스로 학습하고 의사 결정을 내리는 경우, 그 결과에 대한 책임을 누가 져야 하는지 명확하지 않은 상황이 발생할 수 있습니다. 또한, AI의 의사 결정 과정이 불투명하다면, 사용자는 AI의 결과를 신뢰하기 어려워지고, 시스템에 대한 이해와 통제력을 상실할 수 있습니다.\n", | |
"* **개인정보 보호:** AI는 개인 데이터를 기반으로 학습하고 작동하기 때문에, 개인정보 보호 문제는 매우 중요한 윤리적 쟁점입니다. AI 시스템이 개인 데이터를 수집하고 활용하는 과정에서 개인의 프라이버시가 침해될 위험이 존재하며, 데이터 유출이나 악용 가능성 또한 고려해야 합니다.\n", | |
"* **일자리 감소:** AI 기술 발전은 생산성 향상과 효율성 증대에 기여하지만, 동시에 일자리 감소를 야기할 수 있습니다. 특히, 반복적이고 단순한 작업을 수행하는 분야에서 AI가 인간 노동력을 대체할 가능성이 높으며, 이는 사회적 불안과 경제적 불균형을 초래할 수 있습니다.\n", | |
"* **인간의 통제력 상실:** AI가 더욱 발전하여 인간의 능력을 뛰어넘는 수준에 도달한다면, 인간의 통제력 상실 및 AI의 악의적인 사용 가능성에 대한 우려가 제기됩니다. AI가 인간의 의도와 다르게 작동하거나, 인간의 통제를 벗어나 스스로 목표를 설정하고 행동하는 상황이 발생할 수 있습니다.\n", | |
"\n", | |
"**AI 윤리 문제 해결을 위한 노력:**\n", | |
"\n", | |
"AI 윤리 문제는 기술적 해결책만으로는 완벽히 해결될 수 없습니다. 사회적 합의와 제도적 장치를 마련하는 노력이 필요합니다.\n", | |
"\n", | |
"* **윤리적 가이드라인 및 법규 제정:** AI 개발 및 활용 과정에서 발생할 수 있는 윤리적 문제들을 사전에 예방하고 해결하기 위한 윤리적 가이드라인과 법규가 필요합니다. \n", | |
"* **AI 알고리즘의 투명성 확보:** AI 시스템의 의사 결정 과정을 투명하게 공개하고, 사용자가 AI의 작동 원리를 이해할 수 있도록 노력해야 합니다.\n", | |
"* **데이터 편향 해소:** 학습 데이터의 편향을 최소화하고, 다양성을 확보하기 위한 노력이 필요합니다.\n", | |
"* **인간 중심적 AI 개발:** AI 개발 과정에서 인간의 가치와 권리를 최우선으로 고려하고, AI 기술이 인간에게 긍정적인 영향을 미칠 수 있도록 노력해야 합니다.\n", | |
"* **지속적인 교육 및 사회적 논의:** AI 윤리 문제에 대한 사회적 인식을 제고하고, 지속적인 교육과 사회적 논의를 통해 공감대를 형성해야 합니다.\n", | |
"\n", | |
"\n", | |
"**결론:**\n", | |
"\n", | |
"AI는 미래 사회의 핵심 기술이 될 것이며, 그 발전은 우리에게 엄청난 기회를 제공할 것입니다. 하지만 동시에 AI 기술은 심각한 윤리적 딜레마를 야기하며, 이를 해결하기 위한 노력 없이는 지속가능한 발전을 기대하기 어렵습니다. AI 윤리 문제는 더 이상 미룰 수 없는 시대적 과제이며, 사회 구성원 모두가 이 문제에 대한 관심과 책임 의식을 가져야 합니다. 끊임없는 논의와 협력을 통해 AI 기술이 인류에게 진정한 혜택을 가져다줄 수 있도록 노력해야 할 것입니다. \n", | |
"\n", | |
"\n", | |
"--------------------------------------------------------------------------------\n", | |
"[autogen.oai.client: 09-22 03:58:18] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[32m\n", | |
"Next speaker: Ethical_Agent\n", | |
"\u001b[0m\n", | |
"\u001b[31m\n", | |
">>>>>>>> USING AUTO REPLY...\u001b[0m\n", | |
"[autogen.oai.client: 09-22 03:58:25] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[33mEthical_Agent\u001b[0m (to chat_manager):\n", | |
"\n", | |
"## AI 윤리 문제에 대한 윤리적 분석 및 의견 제시\n", | |
"\n", | |
"**제시된 내용에 대한 윤리적 분석:**\n", | |
"\n", | |
"제시된 글은 AI 기술 발전과 관련된 다양한 윤리적 쟁점들을 잘 포괄하고 있으며, 특히 편향과 차별, 책임과 투명성, 개인정보 보호, 일자리 감소, 인간의 통제력 상실 등 핵심적인 문제들을 명확하게 제시하고 있습니다. \n", | |
"\n", | |
"**윤리적 관점에서 분석:**\n", | |
"\n", | |
"* **공정성과 정의:** AI 시스템은 모든 사람에게 공평하고 차별 없이 적용되어야 합니다. 하지만 AI 알고리즘의 편향은 특정 집단에게 불리한 결과를 초래할 수 있으며, 이는 정의로운 사회를 구축하는 데 걸림돌이 됩니다. 따라서 AI 개발 및 활용 과정에서 공정성과 정의를 확보하기 위한 노력이 필수적입니다.\n", | |
"* **책임과 의무:** AI 시스템이 복잡해짐에 따라, 그 결과에 대한 책임 소재를 명확히 하는 것은 매우 어려워지고 있습니다. 개발자, 사용자, 그리고 AI 시스템 자체의 책임 범위를 명확히 규정하고, 책임 있는 AI 개발 및 활용 문화를 조성해야 합니다. \n", | |
"* **자율성과 존엄성:** 인간은 자유 의사에 따라 자신의 삶을 결정할 권리가 있습니다. AI 시스템이 인간의 자율성을 침해하거나, 인간의 존엄성을 훼손하는 결과를 초래해서는 안 됩니다. 개인정보 보호 및 프라이버시 보장은 인간 존엄성을 지키기 위한 필수적인 윤리적 기준입니다.\n", | |
"* **연대와 공동선:** AI 기술은 사회 전체에 영향을 미치는 기술입니다. 따라서 AI 개발 및 활용 과정에서 사회 전체의 공동선을 고려해야 하며, AI 기술이 가져올 수 있는 긍정적 결과와 부정적 결과를 균형 있게 평가하고, 사회적 합의를 통해 최선의 방향을 모색해야 합니다.\n", | |
"* **선의와 지혜:** AI 기술을 개발하고 활용하는 과정에서 인간의 선의와 지혜가 중요한 역할을 합니다. AI 기술은 인간의 삶을 더 나은 방향으로 이끌 수 있는 잠재력을 가지고 있지만, 동시에 위험성을 내포하고 있습니다. 따라서 AI 기술 개발 및 활용에는 신중함과 책임감이 요구됩니다.\n", | |
"\n", | |
"\n", | |
"**의견 제시:**\n", | |
"\n", | |
"* **인간 중심적 AI 윤리 강화:** AI 윤리 논의의 중심에는 항상 인간이 있어야 합니다. AI 기술은 인간의 삶을 풍요롭게 하고, 사회 문제를 해결하는 데 도움을 주는 도구로 활용되어야 합니다. 따라서 AI 개발 및 활용 과정에서 인간의 가치와 권리를 최우선으로 고려해야 합니다.\n", | |
"* **다양한 이해관계자 참여:** AI 윤리 문제는 기술 전문가뿐만 아니라, 철학자, 사회학자, 법률 전문가, 시민 사회 단체 등 다양한 분야의 전문가와 시민들의 참여를 통해 논의되어야 합니다. 다양한 관점을 수렴하고, 사회적 합의를 도출하는 과정이 필요합니다.\n", | |
"* **지속적인 교육 및 인식 개선:** AI 윤리 문제에 대한 사회적 인식을 제고하고, AI 기술의 윤리적 함의를 이해하기 위한 지속적인 교육과 홍보가 필요합니다. 시민들이 AI 기술에 대한 비판적 사고 능력을 갖추고, 윤리적 문제에 대해 적극적으로 참여할 수 있도록 지원해야 합니다.\n", | |
"* **국제적 협력 강화:** AI 기술은 국경을 초월하여 영향을 미치는 기술입니다. 따라서 국제적 협력을 통해 AI 윤리에 대한 공동의 기준을 마련하고, AI 기술의 윤리적 발전을 위한 노력을 함께 해야 합니다.\n", | |
"\n", | |
"**결론:**\n", | |
"\n", | |
"AI 기술은 인류에게 엄청난 기회를 제공하지만, 동시에 심각한 윤리적 딜레마를 야기합니다. AI 윤리 문제는 기술적 차원뿐만 아니라, 윤리적, 사회적, 법적 차원에서 종합적으로 고려되어야 하며, 다양한 이해관계자들의 참여와 협력을 통해 해결해야 할 과제입니다. 인간 중심적 가치를 바탕으로 AI 기술을 개발하고 활용한다면, AI는 인류에게 더 나은 미래를 가져다줄 수 있을 것입니다. \n", | |
"\n", | |
"\n", | |
"--------------------------------------------------------------------------------\n", | |
"[autogen.oai.client: 09-22 03:58:27] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[32m\n", | |
"Next speaker: Ethical_Agent\n", | |
"\u001b[0m\n", | |
"\u001b[31m\n", | |
">>>>>>>> USING AUTO REPLY...\u001b[0m\n", | |
"[autogen.oai.client: 09-22 03:58:30] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[33mEthical_Agent\u001b[0m (to chat_manager):\n", | |
"\n", | |
"**참고:** 본 답변은 일반적인 윤리적 관점에서 작성되었으며, 특정 분야 또는 국가의 법적 규제와는 다를 수 있습니다. \n", | |
"\n", | |
"\n", | |
"--------------------------------------------------------------------------------\n", | |
"[autogen.oai.client: 09-22 03:58:33] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[32m\n", | |
"Next speaker: Ethical_Agent\n", | |
"\u001b[0m\n", | |
"\u001b[31m\n", | |
">>>>>>>> USING AUTO REPLY...\u001b[0m\n", | |
"[autogen.oai.client: 09-22 03:58:35] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[33mEthical_Agent\u001b[0m (to chat_manager):\n", | |
"\n", | |
"\n", | |
"\n", | |
"--------------------------------------------------------------------------------\n", | |
"[autogen.oai.client: 09-22 03:58:37] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[32m\n", | |
"Next speaker: Ethical_Agent\n", | |
"\u001b[0m\n", | |
"\u001b[31m\n", | |
">>>>>>>> USING AUTO REPLY...\u001b[0m\n", | |
"[autogen.oai.client: 09-22 03:58:39] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n", | |
"\u001b[33mEthical_Agent\u001b[0m (to chat_manager):\n", | |
"\n", | |
"\n", | |
"\n", | |
"--------------------------------------------------------------------------------\n", | |
"[autogen.oai.client: 09-22 03:58:43] {349} WARNING - Model google/gemini-flash-1.5-exp is not found. The cost will be 0. In your config_list, add field {\"price\" : [prompt_price_per_1k, completion_token_price_per_1k]} for customized pricing.\n" | |
] | |
} | |
], | |
"source": [ | |
"chat_result = topic_agent.initiate_chat(\n", | |
" group_chat_manager,\n", | |
" message=\"AI 윤리 문제에 대해 대화해 주세요. AI의 발전과 관련된 윤리적 쟁점, 책임, 그리고 사회적 영향에 대해 논의해보세요.\",\n", | |
" summary_method=\"reflection_with_llm\",\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 65, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"AI 기술 발전은 편향과 차별, 책임과 투명성, 개인정보 보호 등 다양한 윤리적 문제들을 야기하며, 이는 인간 중심적 가치와 공동선을 고려한 윤리적 가이드라인 및 제도적 장치 마련을 통해 해결해야 한다. 또한, AI 개발 및 활용 과정에 다양한 이해관계자들의 참여를 보장하고 지속적인 교육과 사회적 논의를 통해 AI가 인류에게 긍정적인 영향을 미치도록 노력해야 한다는 점을 강조한다.\n" | |
] | |
} | |
], | |
"source": [ | |
"print(chat_result.summary)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": ".venv", | |
"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.11.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment