本地Ollama+Spring AI alibaba智能客服(飞机票预定示例Demo)Mac版

发布于:2025-04-02 ⋅ 阅读:(20) ⋅ 点赞:(0)

本地Ollama+Spring AI alibaba智能客服(飞机票预定示例Demo)Mac版

前言:之前了解到很多AI智能体项目都是利用Python开发的,本人想利用Java进行开发,于是发现了Spring AI Alibaba框架,再加上本地是使用Ollama安装了llama3.2:3b,为此就结合本地模型,跑了一下官网的飞机票预订的智能体示例,其中也遇到了一些问题,特此记录一下。

一、简介:Spring AI alibaba

Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。想要了解更多请参考Spring AI alibaba官网

img

二、核心概念

  • 模型(比如:DeepSeek R1、ChatGPT3等)
  • 提示词(比如:设定系统角色告知对话的背景)
  • 提示词模版(比如:今天的日期是 {current_date}),利用了 {current_date}进行占位
  • 嵌入(比如:将文本文字进行向量化表示)

spring-ai-embeddings

  • token(将一句话或一段文本进行转换为token)

spring-ai-concepts-tokens

  • 结构化输出(在提示词中要求返回固定JSON)

三、Demo实战

3.1环境要求

1、本地要安装Ollama、下载模型llama3.2:3b

ollama run llama3.2:3b 

2、下载JDK17

3、配置Maven

3.2目录结构

请添加图片描述

3.3 代码仓库

github仓库

3.4 核心逻辑

请添加图片描述

四、测试结果

4.1对话查询详情

#查询预定信息
GET 127.0.0.1:8080/api/bookings

#对话
POST 127.0.0.1:8080/api/assistant/chat?chatId=1&userMessage=104,王通义,预定详情

请添加图片描述
请添加图片描述

4.2取消预定飞机票

#对话
POST 127.0.0.1:8080/api/assistant/chat?chatId=4&userMessage=取消预定

#对话
POST 127.0.0.1:8080/api/assistant/chat?chatId=4&userMessage=yes

#查询预定信息
GET 127.0.0.1:8080/api/bookings

请添加图片描述
请添加图片描述
请添加图片描述

4.3查看运行日志

注:可以看到对话过程中有调用工具

五、QA

Q:对话的controller中不知道为啥不能使用流式返回,如果使用流式返回的话就好像不能去调用执行工具?

A:

	public String chat(String chatId, String userMessageContent) {
		return this.chatClient.prompt()
				.system(s -> s.param("current_date", LocalDate.now().toString()))
				.user(userMessageContent)
				.advisors(a -> a
						.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId)
						.param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100)
				)
				.call()
				.content();
	}

网站公告

今日签到

点亮在社区的每一天
去签到