当前位置:   article > 正文

qwen-vl-chat-v1多轮会话(附ajax)

qwen-vl-chat

在这里插入图片描述

后端

环境:springboot

ai版本:qwen-vl-chat-v1(免费)

apikey:安装DashScope SDK(DashScope SDK

通义千问VL:官方文档

application.properties

qwkey=你自己的apikey
  • 1
public class QwController {

    private final static String BANBEN = "qwen-vl-chat-v1";
    @Value("${qwkey}")
    private String apikey;

    @PostMapping("/callWithMessage")
    public Object callWithMessage(HttpServletRequest request) throws ApiException, NoApiKeyException, UploadFileException, JsonProcessingException {

        Map dataMap = new HashMap();
        String code = "000";
        String messge = "成功";
        String data = "";
        Constants.apiKey = apikey;

        MultiModalConversation conv = new MultiModalConversation();
        ObjectMapper mapper = new ObjectMapper();
        List<Map<String, Object>> messageList = new ArrayList<>();
        List<MultiModalConversationMessage> messages = new ArrayList<>();

        String message = request.getParameter("message");
        String memory = request.getParameter("memory"); // 记忆
        String img = request.getParameter("img");

        if (memory!=null&!"".equals(memory)) {
            messageList = mapper.readValue(memory,
                    TypeFactory.defaultInstance().constructCollectionType(List.class, Map.class));
        }

        Map<String,Object> userMap = new HashMap<>();

        userMap.put("role",Role.USER.getValue());
        userMap.put("text",message);
        userMap.put("img",img);
        messageList.add(userMap);

        for (Map<String,Object> map :messageList){
            String role1 = map.get("role").toString();
            String msg1 = map.get("text").toString();
            String img1 = map.get("img").toString();
            MultiModalMessageItemText userText = new MultiModalMessageItemText(msg1);

            if (img1!=null&!"".equals(img1)){
                messages.add(MultiModalConversationMessage.builder().role(role1)
                        .content(Arrays.asList(userText)).build());
            }else {
                MultiModalMessageItemImage userImg = new MultiModalMessageItemImage(img1);
                messages.add( MultiModalConversationMessage.builder().role(Role.USER.getValue())
                        .content(Arrays.asList(userImg, userText)).build());
            }
        }

        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .model(BANBEN)
                .messages(messages)
                .build();

        param.setMessages(new ArrayList<Object>(messages));
        MultiModalConversationResult result = conv.call(param);

        //调用保存记忆传到前台
        Map<String,Object> assistentMap = new HashMap<>();
        assistentMap.put("role",Role.ASSISTANT.getValue());
        assistentMap.put("text",result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text").toString());
        messageList.add(assistentMap);

        dataMap.put("code",code);
        dataMap.put("megges",result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text").toString());
        dataMap.put("memory",messageList);
        String resultString = JSONObject.toJSONString(dataMap, SerializerFeature.WriteMapNullValue);
        return resultString;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

Js 前端页面

function sendToServer(message) {
			//记忆代码
            var memoryData = localStorage.getItem('memory');
            $.ajax({
                url: '../qw/callWithMessage',
                method: 'POST',
                data: {
                    "message":message,
                    "memory":memoryData
                },
                contentType: 'application/x-www-form-urlencoded',
                success: function(response) {
                    var jsonResponse = JSON.parse(response);
                    const reply = jsonResponse.megges;
                    //把记忆存在本地
                    localStorage.setItem('memory', JSON.stringify(jsonResponse.memory));
                    appendMessage(reply, 'ai-message');

                },
                error: function(error) {
                    console.error('Error:', error);
                }
            });
        }
        

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/1017915
推荐阅读
相关标签
  

闽ICP备14008679号