构建LangChain应用程序的示例代码:63、如何使用Petting Zoo库定义和运行多智能体模拟环境

多智能体模拟环境: Petting Zoo

在这个例子中,我们展示如何使用模拟环境定义多智能体模拟。与我们的单智能体Gymnasium示例类似,我们创建了一个具有外部定义环境的智能体-环境循环。主要区别在于我们现在使用多个智能体实现这种交互循环。我们将使用Petting Zoo库,它是Gymnasium的多智能体对应版本。

安装pettingzoo和其他依赖

!pip install pettingzoo pygame rlcard

导入模块

import collections
import inspect

import tenacity
from langchain.output_parsers import RegexParser
from langchain.schema import (
    HumanMessage,
    SystemMessage,
)
from langchain_openai import ChatOpenAI

GymnasiumAgent

这里我们复现了Gymnasium示例中定义的相同GymnasiumAgent。如果多次重试后仍未采取有效行动,它会简单地采取随机行动。

class GymnasiumAgent:
    @classmethod
    def get_docs(cls, env):
        return env.unwrapped.__doc__

    def __init__(self, model, env):
        self.model = model
        self.env = env
        self.docs = self.get_docs(env)

        self.instructions = """
你的目标是最大化你的回报,即你收到的奖励总和。
我会给你一个观察、奖励、终止标志、截断标志和到目前为止的回报,格式如下:

Observation: 
Reward: 
Termination: 
Truncation: 
Return: 

你将以以下格式回应一个动作:

Action: 

其中你用实际的动作替换。
除此之外不要做任何其他事情。
"""
        self.action_parser = RegexParser(
            regex=r"Action: (.*)", output_keys=["action"], default_output_key="action"
        )

        self.message_history = []
        self.ret = 0

    def random_action(self):
        action = self.env.action_space.sample()
        return action

    def reset(self):
        self.message_history = [
            SystemMessage(content=self.docs),
            SystemMessage(content=self.instructions),
        ]

    def 

你可能感兴趣的:(langchain,人工智能,AI编程)