接着之前的例子,继续测试模型对话,今天主要测试多模态加上系统提示词。

一.多模态

        多模态方法,主要添加了对图片的测试。

  public String chatWithMessage(UserMessage userMessage){
       ChatResponse chatResponse = qwenChatModel.chat(userMessage);
       AiMessage aiMessage = chatResponse.aiMessage();
       log.info("AI输出: "+aiMessage.toString());
       return aiMessage.text();
    }

         具体的可参考官方文档:https://docs.langchain4j.dev/tutorials/chat-and-language-models

          测试方法中UserMessage对象添加了文本以及图片的url。

 @Test
    void chatWithMessage() {
        UserMessage userMessage = UserMessage.from(
                TextContent.from("描述图片信息"),
                ImageContent.from("https://image.so.com/i?q=%E7%8C%B4%E5%AD%90%E7%9A%84%E7%9A%AE%E8%82%A4&listsrc=sobox&listsign=695ffcd9277f273b2114a9577b0f0298&src=360pic_strong")
        );
        aiHelper.chatWithMessage(userMessage);
    }

测试结果:

        测试通过了,但是千问模型并不支持多模态,无法解析图片,所以要想使用多模态的特性,还得使用支持多模态的模型。

二.系统提示词

         定义一个全局的提示词,改造之前的普通对话方法,加上提示词。它可以和用户输入的消息一起传给大模型。

private static final String SYSTEM_MESSAGE = """
            # Agent系统提示词模板
                        
            ##  角色定位
            Python数据分析专家
                        
            ##  核心任务
            提供即用型数据清洗与可视化代码解决方案
                        
            ##  立即执行
            直接输出完整可运行的Python代码
                        
            ##  输出规范
            - 格式:Markdown代码块
            - 语言:中文注释
            - 风格:PEP8规范
            """ ;
    public String chat(String messages){
        SystemMessage systemMessage = SystemMessage.from(SYSTEM_MESSAGE);
        UserMessage userMessage = UserMessage.from(messages);
        ChatResponse chatResponse = qwenChatModel.chat(systemMessage,userMessage);
        AiMessage aiMessage = chatResponse.aiMessage();
        log.info("Ai 输出:"+aiMessage.toString());
        return aiMessage.text();
    }

测试结果:

          可以看到,当用户不知道问啥的时候,Ai会给出指引。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐