SpringAI入门


1.什么是prompt

Prompt(提示)是用户提供给AI模型的指令或输入,用于引导模型生成所需的内容或执行特定任务。提示词的质量直接决定了ai输出的准确度。

  • 系统提示词:可以整体约束ai输出的内容,一般需要提前设置
  • 用户提示词:用户自主输入的内容,随用随输

2.什么是token

在我们和ai完成一次对话后,会花费一定的token,它是文本分割的基本单元,可能是单词或者标点符号,模型的输入和输出都是按token计算的,一般token越多,成本越高,并且输出速度越慢,不同模型的计费不太一样,一般100万token要几十块钱。可以去Google Al Studio申请一个api key,之后的每次扣费都会计在这个api key上。


3.什么是RAG

RAG(Retrieval-Augmented Generation,检索增强生成)可以利用外部知识库给ai补充知识。很多公司会有自己的业务知识和文档,会构建自己的问答系统或客服,这就需要使用rag技术。首先要有一个知识文档,然后对文本进行切分,然后利用Embedding嵌入技术,将文本图像等数据转化为向量表示,并写入到向量数据库中,用户向ai提问时,会将问题转化成向量,从向量数据库中检索相关的向量数据,找到最近似的文档片段,再将相关信息和用户问题一起输入给大模型,使大模型的回答更准确。

常用的向量数据库有Milvus、PGVector等。

ETL(Extract-Transform-Load):其目标是通过结构化处理提升数据质量,并为后续的语义检索奠定基础。是文档抽取、转换、加载技术,通过精准提取文本、规范数据格式,将信息有序导入向量数据库


4.什么是智能体

以往的ai应用是可以说是一个智能聊天助手,而现在已经升级为智能体了。智能体是能够感知环境,进行推理,制定计划,做出决策并自主采取行动来实现目标的ai系统。我们可以给智能体提供工具,比如网页搜索、查询天气、调用数据库等,智能体就会在需要的时候使用这些工具,比如从网上检索内容,总结后再回复。


5.deepseek的深度思考是怎么实现的?

deepseek的R1模型有深度思考功能,背后是思维链和ReAct技术,让模型先思考问题、推理分析并提出行动计划,然后再行动,并且中间步骤和思考过程是公开可见的,让我们能够理解模型是如何得出结论的。


6.什么是MCP

MCP(Model Context Protocol,模型上下文协议),用于为ai和外部数据源、工具标准化交互。简单来说利用mcp服务,我们可以给ai集成不同的工具和数据,增强ai应用的功能。如何在项目中接入别人的mcp服务,如何开发mcp服务供别人调用但是要学习的。


7.什么是SpringAI

SpringAI、LangChain4j的作用是类似的,是ai开发框架,提供了很多现成的方法,帮我们提高开发ai应用的效率,比如快速对接上下文,保存会话上下文、对接向量数据库、实现RAG等等。SpringAI更容易和主流的java开发框架spring集成,上手难度低,而LangChain4j更灵活,适合开发复杂的智能体。

创建 Controller:

@RestController
@RequestMapping("/chat")
public class ChatController {
    @Autowired
    private ChatClient chatClient;

    @GetMapping("/ask")
    public String askQuestion(@RequestParam String prompt) {
        return chatClient.call(prompt);
    }
}

Prompt 模板动态生成:

PromptTemplate template = new PromptTemplate("为{role}生成关于{topic}的教程");
Map<String, Object> params = Map.of("role", "Java开发者", "topic", "Spring Security");
String output = chatClient.call(template.render(params));

流式响应处理:

@GetMapping("/stream")
public SseEmitter streamChat(String message) {
    SseEmitter emitter = new SseEmitter();
    chatClient.stream(message).subscribe(
        chunk -> emitter.send(chunk),
        emitter::completeWithError,
        emitter::complete
    );
    return emitter;
}

文章作者: Fuchanglai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Fuchanglai !
赏
  目录