接着之前的例子,继续测试模型对话,今天主要测试多模态加上系统提示词。
一.多模态
多模态方法,主要添加了对图片的测试。
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。
@Testvoid 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会给出指引。