使用 Java 和 Spring AI 构建 LLM 应用
展示如何使用 Spring AI 构建由生成 AI 和 LLM 驱动的 Java 应用。
前提条件
- Java 22
- Docker/Podman
- Mistral AI API 密钥(可选)
- OpenAI API 密钥(可选)
- Ollama(可选)
内容
0. 使用案例
项目 | 描述 |
---|---|
chatbot | 通过 Ollama 使用 LLM 的聊天机器人。 |
question-answering | 通过 Ollama 和 PGVector 使用 LLM 进行文档问答 (RAG)。 |
semantic-search | 通过 Ollama 和 PGVector 使用 LLM 进行语义搜索。 |
structured-data-extraction | 通过 Ollama 使用 LLM 进行结构化数据提取。 |
text-classification | 通过 Ollama 使用 LLM 进行文本分类。 |
1. 聊天完成模型
项目 | 描述 |
---|---|
chat-models-mistral-ai | 通过 Mistral AI 使用 LLM 生成文本。 |
chat-models-ollama | 通过 Ollama 使用 LLM 生成文本。 |
chat-models-openai | 通过 OpenAI 使用 LLM 生成文本。 |
chat-models-multiple-providers | 通过多个供应商使用 LLM 生成文本。 |
2. 提示、模板和多模态
项目 | 描述 |
---|---|
prompts-basics-ollama | 通过 Ollama 使用简单文本进行 LLM 提示。 |
prompts-basics-openai | 通过 OpenAI 使用简单文本进行 LLM 提示。 |
prompts-messages-ollama | 通过 Ollama 使用结构化消息和角色进行 LLM 提示。 |
prompts-messages-openai | 通过 OpenAI 使用结构化消息和角色进行 LLM 提示。 |
prompts-multimodality-ollama | 通过 Ollama 在提示中包括各种媒体的多模态。 |
prompts-multimodality-openai | 通过 OpenAI 在提示中包括各种媒体的多模态。 |
prompts-templates-ollama | 通过 Ollama 使用模板进行 LLM 提示。 |
prompts-templates-openai | 通过 OpenAI 使用模板进行 LLM 提示。 |
3. 输出转换器
项目 | 描述 |
---|---|
output-converters-ollama | 通过 Ollama 将 LLM 输出转换为结构化对象(Beans, Map, List)。 |
output-converters-openai | 通过 Open AI 将 LLM 输出转换为结构化对象(Beans, Map, List)。 |
4. 嵌入模型
项目 | 描述 |
---|---|
embedding-models-mistral-ai | 通过 Mistral AI 使用 LLM 进行向量变换(嵌入)。 |
embedding-models-ollama | 通过 Ollama 使用 LLM 进行向量变换(嵌入)。 |
embedding-models-openai | 通过 OpenAI 使用 LLM 进行向量变换(嵌入)。 |
embedding-models-transformers | 通过 ONNX Sentence Transformers 使用 LLM 进行向量变换(嵌入)。 |
5. 文档 ETL 管道
项目 | 描述 |
---|---|
document-readers-json-ollama | 通过 Ollama 使用 LLM 阅读和向量化 JSON 文档。 |
document-readers-pdf-ollama | 通过 Ollama 使用 LLM 阅读和向量化 PDF 文档。 |
document-readers-text-ollama | 通过 Ollama 使用 LLM 阅读和向量化文本文档。 |
document-transformers-metadata-ollama | 通过 Ollama 使用 LLM 增强文档关键词和摘要元数据以提高检索性能。 |
document-transformers-splitters-ollama | 通过 Ollama 使用 LLM 将文档切割成适合上下文窗口的块。 |
6. 向量存储
即将推出
7. 函数调用
项目 | 描述 |
---|---|
function-calling-mistral-ai | 通过 Mistral AI 使用 LLM 进行函数调用。 |
function-calling-ollama | 通过 Ollama 使用 LLM 进行函数调用。 |
function-calling-openai | 通过 OpenAI 使用 LLM 进行函数调用。 |
8. 图像模型
项目 | 描述 |
---|---|
image-models-openai | 通过 OpenAI 使用 LLM 生成图像。 |
9. 音频模型
项目 | 描述 |
---|---|
audio-models-speech-openai | 通过 OpenAI 使用 LLM 生成语音。 |
audio-models-transcription-openai | 通过 OpenAI 使用 LLM 进行语音转录。 |
10. 可观测性
项目 | 描述 |
---|---|
observability-models-openai | OpenAI LLM 可观测性模型。 |
参考资料和其他资源
视频
- 使用 Spring AI 构建智能应用程序 by Dan Vega (JetBrains 直播)
- 使你的 @Beans 智能化 by Mark Pollack (Devoxx 比利时 2023)
- Spring AI 系列 by Dan Vega
- Spring AI 系列 by Craig Walls
- Spring Tips: Spring AI by Josh Long
- Spring Tips: Spring AI Redux by Josh Long
演示
- 航空公司客户支持 (Marcus Hellberg)
- 作曲助手 (Thomas Vitale)
- 文档助手(Marcus Hellberg)
- 航班预订 (Christian Tzolov)
- Spring AI 聊天 (VMware Tanzu)