有了这个大模型,构建大模型Agent没门槛了!

上周智谱在KDD 2024上,发布了新一代基座模型,包括语言模型GLM-4-Plus、文生图模型CogView-3-Plus、图像/视频理解模型GLM-4V-Plus。

每一个都带了Plus,所以应该都挺厉害?如之前写过的一样,BigModel大气,作为智谱的官方平台,嘎嘎送token,是真的送!那必须得继续体验一波新模型。
前排提示,文末有大模型AGI-CSDN独家资料包哦!

到2024年9月份了,体验一个新的大模型,可能就是prompt遵循能力,agent的规划,长文本的信息提取,推理等等。这里直接玩玩Agent了,刚好可以一起测试一下另外的2个模型。

Agent是一个使用LLM作为engine的智能体系统,它具备访问外部工具的能力。所以系统核心有2点, 引擎(LLM) & 工具(tool)。引擎主要起到规划和反思的作用,工具让大模型可以去做很多复杂的事情,比如生成图片,生成视频,文档问答等等。

一般API都有一个tool_calls的参数可以传入工具,黑盒的封装prompt,既然这里是测试模型的能力,必须不用这个参数了,看看对常规的Agent的prompt的鲁棒性。

框架上,这里使用抱抱脸的CodeAgent,用起来比较灵活。

封装引擎,只需要封装一个传入messages,stop_sequences参数的函数即可,这里跟BigModel的API无缝对接,api_key可以从智谱bigmodel平台申请,或者点击文末原文链接直达

from zhipuai import ZhipuAI  
client = ZhipuAI(api_key="") # 填写您自己的APIKey  
  
def llm_engine(messages, stop_sequences=None):  
    response = client.chat.completions.create(  
        model="glm-4-plus",   
        messages=messages,  
        stop=stop_sequences  
    )  
    return response.choices[0].message.content  

工具定义:

  1. 文生图

使用cogview3-plus生成图片,继承一个Tool类,写清楚工具定义,以及函数定义即可,forward写调用cogview-3-plus生成图片

from transformers import Tool  
  
class Text2image(Tool):  
    name = "text_to_image"  
    description = (  
        "这是一个根据文本生成图片的工具,它返回一个生成的图片路径"  
    )  
      
    inputs = {  
        "prompt": {  
            "type": "text",  
            "description": "需要生成图片的描述文本",  
        }  
    }  
    output_type = "text"  
  
    def forward(self, prompt):  
        response = client.images.generations(  
            model="cogview-3-plus",   
            prompt=prompt  
        )  
        print(response.data[0].url)  
        return response.data[0].url  

  1. 图片问答

这里使用最新的glm-4v-plus,文档问答也是类似,输入就是图片+问题,得到答案

class ImageQuestionAnswering(Tool):  
    description = "这是一个可以回答关于图片问题的工具,它返回一个文本,作为对问题的答案。"  
    name = "image_qa"  
  
    inputs = {  
        "image_path": {  
            "type": "text",  
            "description": "图片路径或url",  
        },  
        "question": {"type": "text", "description": "问题"},  
    }  
    output_type = "text"  
  
    def forward(self, image_path, question):  
        if 'http' not in image_path:  
            with open(image_path, 'rb') as img_file:  
                img_base = base64.b64encode(img_file.read()).decode('utf-8')  
        else:  
            img_base = image_path  
        response = client.chat.completions.create(  
            model="glm-4v-plus",  # 填写需要调用的模型名称  
            messages=[  
              {  
                "role": "user",  
                "content": [  
                  {  
                    "type": "image_url",  
                    "image_url": {  
                        "url": img_base  
                    }  
                  },  
                  {  
                    "type": "text",  
                    "text": question  
                  }  
                ]  
              }  
            ]  
        )  
        return response.choices[0].message.content  

然后就可以轻松构建出Agent系统

from transformers import Tool, load_tool, CodeAgent  
  
agent = CodeAgent(tools=[Text2image(),ImageQuestionAnswering()], llm_engine=llm_engine, verbose=1)  
  
agent.run(  
    "画一张搞笑图片,然后描述一下这张图片为什么搞笑?以及图片内容是否符合你生成的prompt"  
)  

日志如下,中间是Agent的规划,步骤:

  • s0: 输入query: 画一张搞笑图片,然后描述一下这张图片为什么搞笑?以及图片内容是否符合你生成的prompt

  • s1: 引擎先成了一个搞笑的prompt;一张搞笑的图片,包含一个滑稽的小丑在马戏团表演,背景有彩色的气球和观众

  • s2: 生成了规划的工具调用步骤, 一次text_to_image,2次image_qa

prompt = "一张搞笑的图片,包含一个滑稽的小丑在马戏团表演,背景有彩色的气球和观众"  
image_path = text_to_image(prompt=prompt)  
  
# 描述这张图片为什么搞笑  
question_why_funny = "这张图片为什么搞笑?"  
answer_why_funny = image_qa(image_path=image_path, question=question_why_funny)  
  
# 确认图片内容是否符合生成的prompt  
question_content_match = "这张图片的内容是否符合prompt?"  
answer_content_match = image_qa(image_path=image_path, question=question_content_match)  
  
print(f"图片路径: {image_path}")  
print(f"为什么搞笑: {answer_why_funny}")  
print(f"内容是否符合prompt: {answer_content_match}")  

  • s3: 规划步骤的执行结果
图片路径: https://aigc-files.bigmodel.cn/api/cogview/202409041939328d669b226dcc4852_0.png  
为什么搞笑: 这张图片的幽默之处在于场景的荒谬和夸张。小丑的姿势和表情非常夸张,他张开双臂,蹲在地上,好像他正在做一个巨大的拥抱或者是在做一个戏剧性的姿势。他的脸部表情很滑稽,眼睛睁得很大,嘴巴张开,好像他正在大笑或者是在惊讶中。此外,周围的环境也很滑稽,充满了五颜六色的气球,给人一种混乱和欢乐的感觉。  
内容是否符合prompt: 图片中的内容与您提供的prompt非常符合。图片中有一个小丑,他张开双臂蹲在一堆五颜六色的气球中,脸上带着笑容,看起来非常开心。他的身后有一群人也在笑着举起双手似乎在为小丑的动作而欢呼。整个场景给人一种欢乐、庆祝的感觉。  

整体体验还是不错的,大模型发展到现在,构建一个多轮具备反思能力的Agent系统门槛进一步降低了!

解锁AI新知,与技术大咖并肩!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值