Ubuntu20.04 + python3.11.9 + django
#1、安装python3.11.9
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
tar zxvf Python-3.11.9.tgz
cd Python-3.11.9
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall
python3.11 -m ensurepip --upgrade
wget https://bootstrap.pypa.io/get-pip.py
python3.11 get-pip.py
#2、安装python虚拟环境和依赖
cd /opt/matagent
python3.11 -m venv pyautogen
source pyautogen/bin/activate
#安装pyautogen
pip install pyautogen==0.2.34
pip install flaml[automl]
pip install chromadb
pip install Image
#安装django
pip install django
pip install djangorestframework
pip install requests
#安装 websocket支持  channels+asgi
pip install channels
pip install asgiref  # Django Channels 依赖的包
#运行服务，支持http+websocket  websocket接口：  ws://192.168.42.130:8000/matagent/chat
DJANGO_SETTINGS_MODULE=matagent.settings uvicorn matagent.asgi:application --host 0.0.0.0 --port 8000
#安装nginx
sudo apt-get update
sudo apt-get install nginx
--查看状态
sudo systemctl status nginx
--修改配置
/etc/nginx/default
nginx配置在default




#pip install autogen-agentchat[websockets]~=0.2 fastapi uvicorn


# 完整agent的console版本
matagent_main.py是入口点。
安装requirements.txt里面的pyautogen，然后运行即可。
.coding目录不要删除，里面包含的是一个配置好的，AGENT执行python代码的环境，否则会报错。
如果存在问题，检查.coding/pyvenv.cfg文件配置
data目录记录了实验数据，PL和UV数据，不要删除，否则会报错。

代码中，agent之间的状态流转逻辑通常为每个group的state_transition函数中，其中return 'auto'表示自动选择合适的agent。

# 简单agent的ui版本
cd ui-simple
chainlit run --port 8989 appUI.py

chainlit继承了pyautogen的AssistantAgent，在这个基础上实现了chainlit的接口。
class ChainlitAssistantAgent(AssistantAgent):
class ChainlitUserProxyAgent(UserProxyAgent):
同时重载了两个方法以发送数据到前端。

    """
    Wrapper for AutoGens Assistant Agent
    """
    def send(
        self,
        message: Union[Dict, str],
        recipient: Agent,
        request_reply: Optional[bool] = None,
        silent: Optional[bool] = False,
    ) -> bool:
        cl.run_sync(
            cl.Message(
                content=f'**{self.name}** Sending message to "{recipient.name}":\n\n{message}',
                author=self.name,
            ).send()
        )
        super(ChainlitAssistantAgent, self).send(
            message=message,
            recipient=recipient,
            request_reply=request_reply,
            silent=silent,
        )