,预计阅读时长20min1.SpringAI、LangChain4J、LangChain?LangChain:最知名的 Python 框架,提供了很多现成的 “模块”(比如让 AI 调用工具、处理对话历史的功能),帮你把大模型(如 GPT)和其他功能(如数据库、网页)结合起来,快速做出能处理复杂任务的 AI 应用。LangChain4J:是 LangChain 的 Java 版本,功能类似,但专为 Java 开发者设计,让熟悉 Java 的人也能轻松用大模型做开发。SpringAI:基于 Spring 框架(Java 生态最流行的开发框架)的 AI 工具包,和 SpringBoot 等技术无缝衔接,适合 Java 开发者快速开发企业级的 AI 应用(比如给公司系统加个 AI 客服功能)。2.智能体开发?智能体(Agent)可以理解为 “能自己做决策的 AI 程序”,就像一个 “数字助手”:普通的 AI 工具(比如 ChatGPT)需要你一步一步输入指令;而智能体可以接收一个 “大目标” 后,自己拆解成小步骤,甚至会主动调用工具(比如查天气、算数据)、调整策略,直到完成任务。开发智能体,就是编写这样的程序,让 AI 具备 “自主规划、自主行动” 的能力(比如开发一个能帮你自动订机票、规划行程的 AI 助手)。3.RAG?RAG 全称是“检索增强生成”,是让 AI 回答更准确的 “小技巧”:大模型(如 GPT)的知识截止到某个时间,而且可能 “胡编乱造”;RAG 的思路是:当你问 AI 一个问题时,先让它从你的私有数据(比如公司文档、书籍 PDF)里 “检索” 相关信息,再结合这些信息生成回答。比如你用公司内部手册做 RAG,AI 就能准确回答 “公司请假制度”,不会瞎编。4.Tool/Function Calling?简单说就是“让 AI 调用工具的能力”,具备实时、私有化业务调用能力:工具可以是计算器、搜索引擎、数据库、API 接口等(比如查实时天气的接口);普通 AI 只能 “说”,但有了 Tool Calling,AI 可以根据问题判断 “我需要用工具”,然后自己调用工具获取信息,再整理成答案。例如你问 “今天北京的天气”,AI 会调用天气 API拿到数据后告诉你 “今天北京晴,25℃”。5.MCP?MCP 全称是 “模型调用协议”(Model Calling Protocol),是一种 “通用规则”:不同的大模型(如 GPT、文心一言、讯飞星火)调用方式不一样(比如 API 接口格式不同);MCP 就是制定一套统一的 “沟通语言”,让开发者用同一套代码就能调用各种大模型,不用为每个模型单独写适配代码,方便切换和管理。6.向量知识库?专门存储和快速查找 “语义相似内容” 的数据库:文字、图片等信息可以转换成 “向量”(一串数字,代表这个内容的语义特征);向量知识库能快速计算两个向量的 “相似度”,帮你找到和 “问题” 意思最接近的内容。比如你问 “怎么申请请假?”,它能从公司文档里快速找到 “请假流程” 的相关内容(RAG 技术通常会用到向量知识库)。再来看几个经典面试题项目相关项目中AI怎么集成的
我们采用的是Ollama私有化部署,然后使用SpringAI框架调用底层大模型完成AI的集成
AI智能体的开发是如何进行设计的,为什么这样设计
这个要看具体的业务场景了,以我最近一个项目天机AI助手为例,他是一个在线教育项目,所以他的目标定义是做课程咨询、下单、问题答疑功能。在此业务基础上我就可以选择合适的LLM作为技术支撑了,考虑到国内生态与社区活跃度,我们采用的是阿里开源的Qwen3进行本地私有化部署避免敏感数据泄露。同时为了完成对话上下文记忆功能,我重写了SpringAI的ChatMemory默认实现的内存存储,改为MySQL+Redis实现。为了保证我的智能体可以得到实时第三方数据,比如天气、淘宝评价、京东售价,我也引入了Tool Calling来做逻辑的增强,引入了RAG架构做数据的增强,从而减少大模型幻读的问题。这里面也有很多细节问题,比如RAG的分块策略、RAG的向量嵌入、向量化存储方案、索引构建等,面试官如果需要的话我可以再给你深入讲一下。
做AI项目的时候,遇到了哪些问题,如何解决的
说实话刚开始做这个AI项目的确踩过很多坑,我说几个我印象中比较深的吧第一个就是数据质量差,早期我们提供的数据存在标注错误,脏数据这些问题,为了解决这个我们引入了一个规则引擎做数据的基础性规则校验,做了一个简单的数据清洗也遇到了私有化模型部署后的数据漂移问题:我们项目上线大概是3个多月后,发现准确率下降了10%左右,大模型很容易推荐用户去了解Java课程,后面发现这个问题实际也是大模型里面经典的数据漂移问题。也就是数据会随着外部事件而变化,比如考计算机二级来咨询C++的就多,毕业找实习咨询Java的就多,从而导致了我们的模型准确率不固定。为了解决这个我们设置了漂移的阈值,超过之后会自动触发Lora做小样本数据场景的微调,避免大范围的失准。
系统提示词一般有些组成部分
提示词就是告诉AI:你是谁、你要做什么、你要怎么做、你不能做什么,所以一般包含这样6个核心组件角色定义:告诉AI大模型的身份定位,如你是初中数学老师、你是一名资深Java面试官核心任务:告诉AI大模型你要做什么,如用户会输入一段数学题,你给出具体解题步骤、最终答案规则约束:告诉AI大模型不能做什么,如输出的过程中一定要有步骤、答案,请不要涉及敏感话题风格语气:告诉AI大模型的风格,如政府报告类就要严肃,私人家教就要温和鼓励参考示例:当任务较复杂的时候,尤其需要结构化输出json文本这样的结果时,一般需要提供一个示例界定优先级:当多任务并行,需要告诉AI谁的优先级更高,避免AI顾此失彼
你们这个模型用的私有模型,还是用的是外部大模型
过去工作的时候,两种都有使用过;国内的一些主流的我们可以采用开源外部调用;国外的比如OpenAI、Azure OpenAI、Google Gemini受限于网络原因,我们也会做私有化部署
AI项目是怎么去实现的,采用哪些技术
基本的技术框架是使用SpringAI来实现,对接的大模型是阿里的千问max,我们是基于ES来实现RAG知识库的,将系统中的业务数据( 比如:课程数据)通过向量化存储到ES中,在发起大模型请求前,先查询ES向量库,查询到数据后,一起发给大模型进行处理,再和其他业务系统对接中,我们使用的Tool Calling方式来实现,在自定义的Tool中通过Feign来调用其他微服务的接口来获取数据。对于对话管理,我们是采用Redis + Mysql的方式,Redis中存储的具体的对话内容数据,Mysql中存储的是对话列表数据(没有内容,只要标题、时间等)。在项目中,我们还引入了MCP,将一些通用的服务封装成MCP服务,这样再其他的AI中就可以直接使用了,提供了服务的复用性。
私有模型部署是怎么实现的
因为我们都是Java技术栈,所以采用的是Ollama本地部署,他有一个ollama run命令就可以启动部署,也有一些logs命令可以查看日志,我们部署的是最新的qwen3.0开源版本;当然我也了解过vLLM也可以做企业级的私有化部署,但是这个是基于Python语言的,横向比较下来,我们还是选择了Ollama。
Spring AISpring怎么整合AI的
目前Spring框架是借助于SpringAI来实现的,他通过定义标准化接口( ChatClient 用于对话、EmbeddingClient 用于向量化、ImageClient 用于图像生成)让开发者不用担心底层模型,只需要调用即可。同时针对不同的AI模型(如OpenAI、Gemini)也提供了适配器,避免开发者频繁声明HTTP调用,签名验证
为什么选择SpringAI
Spring AI提供了统一的 API,能方便地切换 OpenAI、Azure OpenAI、Anthropic、本地模型等,覆盖了聊天、文本生成、嵌入、图像等主流需求。它的优势在于统一和简化,更适合企业级业务系统的智能化改造,我们可以做到Spring生态的零成本迁移。虽然说LangChain4j也能做到上述的一部分,但是其本质设计有独立的Chain、Agent、Memory概念,需要开发者单独设计工作流,这个开发成本很高。另外目前企业里也不需要做复杂的记忆管理、自定义决策逻辑,不需要高度定制化,有这个精力还不如做大模型的微调所以综上,我们在横向技术对比的情况下,选择了SpringAI
SpringAI 与 Spring AI Alibaba有什么区别
SpringAI:定位通用 AI 开发标准,目标是抽象出统一的 AI 操作接口(如模型调用、向量存储、工具调用等),屏蔽不同 AI 模型 / 服务的底层差异。Spring AI Alibaba:定位阿里云 AI 服务的 Spring 适配,目标是让 Spring 开发者更便捷地使用阿里云的 AI 能力(如通义千问大模型、向量数据库、OSS 存储等),是 SpringAI 标准在阿里云生态的具体实现。简单说,SpringAI是通用标准,Spring AI Alibaba 是阿里云生态的实现:前者解决不同 AI 服务接口不统一的问题,提供标准化开发体验;后者解决阿里云 AI 服务与 Spring 生态整合的问题,更贴合阿里云用户需求实际开发中,若使用阿里云服务,可优先考虑 Spring AI Alibaba(兼容性更好);若需跨厂商或通用场景,直接使用 SpringAI 即可。
说说SSE协议,有什么特点,如何关闭连接
AI大模型的思考和输出可能会比较久,如果我们让LLM思考组装完再返回给用户,用户感受很差。而SSE是基于HTTP的长连接,类似于WebSocket一样,可以借助WebFlux返回值类型做到流式返回,从而减少用户的等待时间。关闭连接可以客户端主动调用close方法关闭,也可以让服务器在消息中携带一个结束标识,比如END,客户端收到后主动关闭。我们采用的是后者,代码形如下面
如何实现流式输出,类似打字机效果
Spring AI 通过 SSE 技术(基于 HTTP 长连接)将这些实时生成的内容片段,持续、逐段推送给前端客户端;前端(如浏览器)会提前建立与 Spring AI 服务器的 SSE 连接,专门监听服务器推送的内容片段,监听到内容后会按照预设速度将片段内容逐步输出到页面上;服务器端会通过 SSE 的 “事件标识” 或 “结束信号”,告知客户端 “当前片段是否为最后一段”,避免客户端遗漏内容
消息如何存储上下文
我们使用的SpringAI默认的是内存存储,这样肯定会存在上下文限制问题,所以重写了ChatMemory接口的方法,实现了缓存+数据库的持久化存储方案。具体方案是:对于当天的对话内容,因为变动频繁且会上下引用,所以我们存在Redis中,然后每天凌晨通过定时任务XXL-JOB持久化到DB中,数据库本身我们也做了水平拆分,避免单表过大导致的慢SQL问题。
AI项目对话持久化存储,存储到哪里
同上
对话时上下文的token超过了大模型输入的限制,该怎么做
这个问题实际就跟上面相关的,因为底层大模型限制了token长度,我过去也遇到类似的这个问题,解决方案我是分为3个维度上下文压缩:简单来说就是对用户输入的文本做摘要总结,缺点是需要掉一次大模型做压缩,增加API成本和耗时,我们目前采用的就是这种方案,因为实现起来非常简单还有一种较为复杂的方案,就是借助于RAG做上下文拆分:我会把用户的输入拆分为多个上下文块,每一个可以是1024个token,为每个块生成一个Embedding,存入向量知识库,当用户发起提问的时候,去匹配与之关联的上下文块,再做拼接输入。这样我就无需加载全部历史上下文,而是按需加载
有遇到过大token的情况吗
同上
SpringAI集成遇到那些问题
这个主要是我当时负责对接,的确是踩过几个坑,我说一下我当时遇到的问题吧第一个就是Spring AI版本迭代比较快,他跟springboot版本是有关的,我们引用的是SpringAI的0.8版本,他需要最低的Boot版本是3.2,所以我需要对整个工程做一个Boot的版本升级第二个就是为了前端体验友好,我采用的 SSE 流式输出时,若前端是传统 MVC 架构,可能出现 “连接过早关闭”—— 因为 Spring MVC 默认同步处理,而流式输出需要保持长连接,需配合 @ResponseBody 和异步控制器(@Async)才能稳定运行。还有就是我们项目集成了 Spring Security,AI 接口会被拦截 —— 比如调用 OpenAI 的 API 时,Security 的 CSRF 防护会拦截跨域请求,需要手动配置白名单,允许对 AI 模型接口的匿名访问或令牌验证。
Spring AI怎么解决多个模型之间的选择的
如果是复杂场景需要动态切换,比如根据用户请求里的参数,在服务层加个判断逻辑,想调用 OpenAI 就用 openaiClient,想调用国产模型就用 qianfanClient,完全能按需路由。甚至可以结合 Spring 的 @Profile 注解,通过启动参数激活不同模型的配置,比如线上用稳定的 GPT-4,测试环境用开源模型,部署起来很方便。
Tool CallingToolcalling调用原理
Tool Calling主要是用来解决大模型时效性不足、私有业务逻辑定制化等局限性问题,在Spring AI框架下,我们首先借助于@Tool注解声明一个个Tools,此时LLM会根据用户输入的需求,判断是否调用工具?调用那个工具,这个就依赖LLM的任务规划能力。当确定调用工具的时候,LLM需做NLP自然语言的处理,输出为结构化指令,避免工具执行的歧义。当LLM执行返回结果后,LLM再次反向输出结构化数据给到用户即可。
Tool Calling是什么时候调用的
大模型分析用户的输入,将其与已绑定工具进行匹配,判断是否存在能够帮助解决问题的工具如找到匹配项大模型不会直接回答问题,而是生成一个工具调用请求的特殊消息,指明要调用的工具名称以及传入的参数应用程序代码接收到工具调用请求后,解析出工具名称和参数,然后在本地环境或通过网络调用外部服务来实际执行工具工具执行后返回的结果会被包装成特定格式,并与之前的对话历史一起再次发送给大模型大模型结合工具执行的结果,最终生成一个面向用户的自然语言回答
RAGRAG是什么,实现原理?
所谓的RAG就是一种AI检索增加的技术,因为AI大模型的训练往往是大而全的,要想解决知识过时、领域专属信息的问题,就需要借助于RAG来实现了,他主要分:数据准备、检索匹配、生成优化3个阶段:数据准备:大模型无法直接读取原始PDF、Word、网页等,所以我们需要先借助工具做文档拆分,拆分之后将每个知识片段转换成向量,存储到专业的向量知识库(ES、Milvus)中检索匹配:当用户提出问题时,把用户的问题借助于同一个模型转换为向量,然后通过ANN算法计算问题和知识片段向量的距离,底层一般是余弦相似度或欧氏距离,匹配距离最近的Top N片段。此时LLM会对Top N片段再做二次筛选,提出重复片段、低质量内容生成优化:拿到具体结果后,大模型开始组装返回格式,输出给后端服务器,服务器将内容响应给前端
什么是知识的向量化?
向量化(Embedding)本质是将文本、图片、音频等非结构化数据,转化为机器可理解的 “数值向量”(一串有序数字) 的过程。因为机器无法直接“理解”文字的含义,如无法直接判断 "iPhone 续航" 和 "苹果手机电池使用时长"是一个意思。所以借助于嵌入模型(Embedding Model)拆分匹配
Prompt和RAG的本质区别
我理解这个问题本质在于,Prompt是对模型的指令优化。通过调整提问方式(如增加上下文、明确输出格式),让模型更精准地理解需求,从而更好地调用自身已有知识,本质是挖掘模型内在能力;而RAG是给模型的知识补充。解决模型知识滞后(如不知道 2024 年后的事件)、领域知识不足(如特定行业的专业术语)等问题,本质是扩展模型的知识边界一般工作中这两者都是结合使用,Prompt做大而全通用问题解答,RAG做小而美专业问题解答。
RAG和Tool的区别
这两个要做的事情本质不一样RAG侧重于让模型能够基于外部知识库的准确信息,提高自己回答精准度,本质是:增强知识覆盖范围如提供医疗领域专业的诊断信息、电子病历信息、医嘱信息回答已知、固定范围Tool核心是解决大模型基于外部工具完成特性任务,本质是:拓展行动能力如提供天气查询API、自己工程的代码逻辑API回答实时、动态计算范围
向量库的数据是从哪里来的?
我们主要是两部分数据来源:一部分是开源的文档,比如维基百科的词条、也有合规爬取的一些数据;还有一部分就是我们公司自己内部的文档数据,这个一般是PD、售前团队整理好之后给到我们的。
向量化使用了哪个大模型
业界目前通用的就这几个,比如OpenAI的text-embedding,谷歌的Gemini Embedding,我们采用的是国内通义千问的Qwen3-Embedding
相似度是怎么设置的
这个主要是分两类,一类是借助算法自身实现:比如常见的余弦相似度、欧氏距离、内积;还有一类是我们通过设置相似度的阈值来过滤不相关的结果。我们项目中采用的是前者的余弦相似度,像常见的向量知识库Milvus、ElasticSearch都是内置这些算法的,我们只需要配置算法类型和阈值就行了。
RAG和AG(知识库)的区别
RAG(检索增强生成):本质是大模型的增强工具-通过 实时检索外部非结构化知识(如文档、网页、PDF)”,弥补大模型 “知识过时、领域知识不足” 的问题,最终由大模型结合检索到的信息生成自然语言回答。AG(知识库问答系统):本质是结构化知识的查询系统-基于预先构建的 结构化知识库(如知识图谱、关系数据库,存储 “实体 - 关系 - 属性” 的明确关联,比如 “北京 - 首都 - 中国”“苹果 - 创始人-乔布斯”),通过规则匹配、语义解析等方式,从知识库中直接提取答案。
向量工具text-embding-v3模型,向量化后得到的结果是一个什么类型的数据
得到的结果是一个固定维度的浮点数数组(列表),属于 “数值向量” 类型,它的输出格式是一串有序的小数(如[0.123, -0.456, 0.789, ..., 0.321]),后续可直接用于计算相似度(如余弦相似度)、存储到向量数据库(如 Pinecone、Milvus),或作为模型输入的特征值。
RAG知识库怎么做数据清洗的
我这个项目主要是大模型团队来负责数据清洗的,不过我也做了一些基本的了解:首先是原始数据筛选,用 MD5 哈希比对去重,通过文件校验工具(Apache Tika)识别损坏文件,再按领域关键词过滤无关内容;格式标准化阶段,依赖文本提取工具(PyPDF2、pdfplumber 处理 PDF,BeautifulSoup 解析 HTML)剥离格式标签,用 chardet 统一编码为 UTF-8,表格转文本用 pandas,图片文字提取靠 OCR 工具(Tesseract);内容降噪时,用正则表达式匹配删除页眉页脚、特殊符号,借助 NLP 工具(如 Jieba 分词、spaCy)识别冗余修饰词,同时保留专业术语;结构化处理中,用规则引擎按标点 / 章节拆分文本,通过实体识别工具(BERT 模型微调)标记关键信息(产品名、价格等),单位转换靠自定义脚本;最后质量校验,用 Python 脚本统计特殊字符残留率,抽样文本通过向量化模型(如 text-embedding-3-small)测试兼容性,确保清洗后的数据能正常用于后续检索。
RAG分段/分块怎么做的详情可以阅读:RAG五种分块策略,技术原理、优劣对比与场景选型之道
RAG的分段基于不同业务场景选择方案是不一样的,常见的有:固定大小分块、语义分块、递归分块、基于文档结构的分块和基于LLM的分块。我们项目采用基于文档结构的分块,它的细节就是:利用文档固有结构,如标题、章节、列表、表格等进行切分,每个结构单元作为一个块,若某结构单元过大,再结合递归或固定大小分块细化。其逻辑清晰,检索高效,但依赖格式标准化,适用于结构化文档。
MCP什么是MCP?
我理解的MCP主要做两件事情:AI 领域的模型上下文协议(Model Context Protocol) ,Anthropic 2024 年底推出的开放协议,核心是给 AI 搭 “通用接口层”—— 以前 AI 对接数据库、传感器这些外部资源要单独适配,有了它,不同 AI 模型能直接 “即插即用” 调用资源,降低协作成本。硬件领域的多芯片封装(Multi-Chip Package) ,解决单芯片性能瓶颈的技术:把 CPU、GPU 等不同芯片集成在一个小封装里,通过高速互联技术让它们协同工作,减少数据延迟,现在 AI 加速器、汽车电子里用得很多。
MCP与Toolcalling有什么区别Function Call = 手机的语音助手(只能控制本机APP)MCP = 蓝牙协议(让任何手机连接任何耳机)
这两个技术点功能上的差异还是挺明显的,FC是通过调用外部函数或服务来增强模型功能的机制,其实现是在大模型的架构体系内,当模型处理用户输入的时候,判断是否需要调用外部函数,需要模型就自己调用并得到返回结果而MCP是一种模型间的上下文协议,其核心功能是规范应用程序向大模型提供上下文信息的统一数据格式、策略规则等信息。主要分MCP主机、mcp-client、mcp-serve三个,主机就是运行AI智能体的应用程序,负责发起请求;mcp-client未与应用程序内部,负责与mcp-serve对接、请求标准化、身份验证等(有点类似我们微服务做远程调用的api、sdk);mcp-serve是遵循MCP协议的对外提供工具或API的服务
模型原理和参数大模型是多少数量级/多少参数的
我们目前这个项目是公司内部使用,偏向于2B侧,数据量是7B
AI的模型使用的GPU大小
这个取决于模型的参数数量和应用场景了,像我刚才提到的7B的数据量,我们目前单卡是采用的英伟达的4090(24GB现存),能够支持的QPS大概是40-60之间,所以我们项目采用的多卡配置,也就是借助于NVLink技术完成了两张4090的互联。我也了解过如果想要专业化的,可以上A100,但是成本太高将近20W,它可以支持1500 tokens / 秒的吞吐量
谈谈AI大模型的选型怎么做的
如果是做通用对话(如客服机器人),优先选成熟的闭源模型(如 GPT-4、Claude)做私有化部署,它们的自然语言理解和多轮对话能力更稳定;如果是垂直领域(如医疗、法律),则要评估模型的领域知识覆盖度,比如用通义千问的医疗微调版,或基于开源模型(如 Llama 2)用行业数据做二次训练。另外,若涉及多模态(图文生成),需确认模型是否支持(如 Gemini Pro、GPT-4V),避免后期集成麻烦。算力方面,小模型(如 7B 参数)可用单卡 GPU 部署,适合本地化需求;大模型(如 100B+)依赖分布式集群,更适合云服务调用
了解过大模型LLM的一些原理吗
从基础架构来看,LLM 基于Transformer 架构,这是一种以 “自注意力机制” 为核心的神经网络。简单说,自注意力能让模型处理文本时,自动判断每个词与其他词的关联(比如 “他” 指代前文的 “小明”),从而捕捉长距离的语义依赖。模型由大量 “编码器 - 解码器” 模块堆叠而成,参数规模(从数十亿到数万亿)决定了其捕捉语言模式的能力 —— 参数越多,能记住的语法规则、语义关联越丰富。当输入 prompt(提示词)时,模型会将文本转为 “词向量”(数字表示),通过多层 Transformer 计算,输出下一个词的概率分布,再基于这个分布采样生成第一个词;接着把生成的词加入输入,重复这个过程,直到生成完整回答。这个 “自回归生成” 的特点,让 LLM 能产出连贯的长文本,但也导致它本质是 “基于统计规律的预测”,并非真正理解语义 —— 这也是为什么有时会生成看似合理却错误的内容(幻觉)。
大模型微调怎么实现
好的面试官,这块我上个项目还实操过的,首先大模型微调的核心逻辑是 “用领域数据针对性调整模型参数”,所以在这里我们就可以优先用参数高效微调(如 LoRA),冻结大部分模型 99% 参数,只训练低秩矩阵,单卡就能跑,现在企业里用得最多;全量微调适合适合数据量大(几十万样本)这种情况就建议使用A100集群了,一般很少有公司实操。训练的细节是我们首先做数据的基本清洗工作,然后加载Llama2或GPT-2模型和对应tokenizer,冻结部分底层参数(尤其 PEFT 策略下),然后用 PyTorch、Transformers 库设置超参数开始迭代、不断的微调,这里面也需要避免过拟合的情况,模型微调好之后我们就可以封装API对外提供使用了。
大模型幻觉问题怎么解决
面试官您好,解决大模型幻觉(生成错误或虚构信息)的核心思路是 “从输入约束、生成控制、输出校验” 三个环节入手,结合技术手段和工程实践,具体可以从这几个关键点来说:输入增强:用 RAG(检索增强生成)给模型 “喂对料”,把用户问题相关的权威知识(如文档、数据库内容)作为上下文传入,让模型基于确凿信息生成回答,避免 “瞎编”。比如回答医疗问题时,先检索权威医学手册片段,再让模型基于片段生成内容。提示词工程:通过指令明确约束模型行为,比如在 prompt 中加入 “不知道的内容请说‘无法确定’,不要编造”,或要求 “回答需引用来源片段中的具体语句”,强制模型保持输出严谨性。模型调优:用高质量、带来源标注的数据集做微调,让模型学习 “区分已知与未知”;或通过 RLHF(人类反馈强化学习),对幻觉输出进行惩罚性训练,强化模型的事实一致性。输出校验:增加后置验证环节,比如用知识图谱检查实体关系是否正确(如 “北京是中国首都” 是否匹配图谱),或调用工具(如搜索引擎)验证生成的关键信息(如事件时间、数据指标),发现错误则拒绝输出或修正。
其他平时工作学习的用AI做什么
主要是借助豆包、DeepSeek做一些知识总结;借助于Cursor帮我做简单代码实现、代码Review
有了解过Coze和dify
有的面试官,我们当时做技术方案调研的时候,我也参与过这两个技术选型的学习和研究Coze是基于字节推出的一站式Agent开发平台,擅长工具集成,它内置了抖音、头条、地图、天气等字节内部生态工具,也可以调用第三方API或自定义函数,他的工作流编排也很出色。主要适合多工具协同、复杂对话逻辑的AI助手场景Dify是开源免费的一个框架,能够对接主流大模型(OpenAI、 Claude、国产模型等)、向量数据库(Pinecone、Milvus 等),兼容 Spring AI、LangChain 等框架;适合于深度定制、本地化部署的AI应用场景