? ? ? ?接著之前的例子,繼續測試模型對話,今天主要測試多模態加上系統提示詞。
一.多模態
? ? ? ? 多模態方法,主要添加了對圖片的測試。
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會給出指引。