思路整理在开始实现上述功能之前,先让我们把参与者和流程整理一下,如下图所示:
AutoGen处理股票数据比较的过程,有用户、用户代理、用户助手三个参与者 。用户负责提出问题 。用户代理由AutoGen的对象扮演,它负责理解用户提出的问题,并向用户助手发出命令,如果在执行过程中用户助手遇到问题,用户代理需要对其进行解释 。用户助手负责拿出解决方案,生成执行代码,同时还需要评估代码的正确性 。最终,将执行的代码交给用户代理执行 。
流程的步骤如下:
- 用户提出问题 , 需要将股票的比较信息通过画图的方式展示出来 。
- 用户助手收到问题后,进行理解和解释 , 随后判断问题的性质,并且转交给用户助手进行执行 。
- 用户助手采取相应的处理措施,按照得到的方案生成执行任务,在模拟代码执行的时候发现问题 。
- 针对问题,用户助手进行自我修复 , 再次模拟执行代码 。在代码通过执行之后 , 将其交给用户代理执行 。
- 用户代理执行代码之后,将结果返回给用户 。
文章插图
股票比较流程图
代码编写清楚流程之后我们来看看代码,如下:
# 导入autogen模块 。这个模块可能是一个自动生成某些配置的库 。import autogen# 使用autogen模块中的config_list_from_json函数 。# 此函数的作用是从一个JSON格式的配置文件中创建配置列表 。config_list = autogen.config_list_from_json(# 第一个参数是JSON配置文件的名称,这里指定的是"OAI_CONFIG_LIST.json" 。# 这个JSON文件包含了一些配置数据 。"OAI_CONFIG_LIST.json",# 第二个参数是一个字典,它用于过滤配置文件中的内容 。# 这里的字典指定了只选择模型为"GPT-4"的配置 。filter_dict={"model": ["gpt-4"],},)
这段代码用于导入AutoGen 的模块并调用其中的 config_list_from_json 函数加载与大模型相关的配置信息 。下面按照要求进行解释:1. 导入模块:
import autogen:导入名为 autogen 的Python/ target=_blank class=infotextkey>Python模块 。这个模块的具体功能未在代码中说明,但根据名称推测 , 它可能与自动生成配置或代码有关 。
2. 函数调用:
config_list_from_json 函数从JSON文件中读取配置,并根据提供的过滤条件生成一个配置列表 。
过滤字典:
3. filter_dict:用于过滤JSON文件中的内容 。在这个例子中,它指定了["gpt-4"] 作为AutoGen要使用的模型 。
接下来看看 OAI_CONFIG_LIST.json文件长什么样子 。文件包含了一个JSON数组,每个元素是一个JSON对象,代表一个API配置 。这个文件可能被用于存储不同API环境的配置信息 , 如API密钥和基础URL 。
[{#大模型的名字'model': 'gpt-4',#对应的API的Key'api_key': '<your OpenAI API key here>',},{'model': 'gpt-4','api_key': '<your Azure OpenAI API key here>','base_url': '<your Azure OpenAI API base here>','api_type': 'azure','api_version': '2023-06-01-preview',},{'model': 'gpt-4-32k','api_key': '<your Azure OpenAI API key here>','base_url': '<your Azure OpenAI API base here>','api_type': 'azure','api_version': '2023-06-01-preview',},]
接着重头戏上演 , 我们创建了两个对象:assistant 和 user_proxy 。它们用来创建用户代理和用户助手 。用于模拟用户代理和用户助手之间的交互 。下面是对代码的逐行解释:1.创建用户助手 (assistant)
# 创建一个名为'assistant'的AssistantAgent对象,这个对象可能代表一个智能助手 。assistant = autogen.AssistantAgent(name="assistant",# 名字属性被设置为'assistant' 。llm_config={# llm_config是一个字典,用于配置助手的行为 。"cache_seed": 42,# 'cache_seed'可能用于初始化随机数生成器,以保持结果的一致性 。"config_list": config_list,# 'config_list'是之前从JSON文件中得到的配置列表 。"temperature": 0,# 'temperature'设置为0,可能用于控制生成内容时的随机性或创造性 。},)
2.创建用户代理 (user_proxy)# 创建一个名为'user_proxy'的UserProxyAgent对象,这个对象可能代表一个用户界面或代理 。user_proxy = autogen.UserProxyAgent(name="user_proxy",# 名字属性被设置为'user_proxy' 。human_input_mode="NEVER",# 'human_input_mode'被设置为'NEVER',表明不预期会有来自真人的输入 。max_consecutive_auto_reply=10,# 'max_consecutive_auto_reply'设定在需要用户输入而没有输入时,自动回复的最大次数 。is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),# 'is_termination_msg'是一个函数,用于判断消息内容是否表示终止对话 。code_execution_config={# 'code_execution_config'配置代码执行的环境 。"work_dir": "coding",# 'work_dir'设定工作目录为'coding' 。"use_Docker": False,# 'use_docker'表明在执行代码时不使用Docker容器 。},)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 摩根大通称人工智能技术已开始创造收入
- 人工智能最新研究:朝人类-AI互动开放式文化演变迈出第一步
- m2m物联网什么意思,物联网智能网关装置有什么作用?
- 微信如何找到附近的人并打招呼
- 旧手机怎么改装行车记录仪,智能手机怎样改装行车记录仪软件下载
- 手机ip67级防水是什么意思
- vivo语音助手怎么唤醒,vivo手机智能助手怎么唤醒?
- 2023年微软开源八个人工智能项目
- 训练生成式人工智能在军事应用中的风险分析
- oppo k5跟realme x2哪款值得入手