首页 文章 精选 留言 我的

精选列表

搜索[驱动],共10004篇文章
优秀的个人博客,低调大师

DataBuddy数据语义驱动的企业Agent Runtime实践

先想象一个场景:Agent 不只是写一份周报总结,而是要接入数据源、生成 SQL与工作流、构建 DWD/DWS 模型,最后再把每日同步任务发布到生产环境。这时候你最担心的,其实已经不再是"它说错一句话"——那是内容问题,识别和修正都相对简单。你真正担心的是"它做错一个动作":一条误读的 DDL 改了线上表结构,一次越权读取把客户明细带到了错误的位置,一个被忽略的口径差让全公司看到的是"虚增"了 30% 的订单。

优秀的个人博客,低调大师

🔥 用 ChatModel 构建 LLM 驱动的 Java 应用

如果你尝试过在 Java 应用中集成大语言模型(LLM),大概率写过不少样板代码:HTTP 客户端、JSON 解析、流式处理、会话管理……Solon AI 4.0 的ChatModel用一套简洁的 Builder API 把这些都封装好了。 本文将通过真实的代码示例,带你一步步用ChatModel构建 AI 功能——从简单的单次调用,到带记忆的流式聊天机器人。 1. 什么是 ChatModel? ChatModel是 Solon AI 生态中的统一 LLM 客户端。你不再需要为不同的模型提供商写不同的 HTTP 调用,而是通过一套统一的 API 完成: 同步调用— 一次请求,完整返回 流式调用— 基于 Project Reactor 的响应式流(Flux<ChatResponse>) 工具/函数调用— 让 LLM 调用你的 Java 方法 聊天会话— 自动维护对话记忆 多模态消息— 文本、图片、音频 方言适配— 支持 OpenAI、Ollama、Anthropic、Gemini、DashScope 等多种服务商 最核心的是它使用了方言模式(Dialect Pattern)——你只需要指向任意兼容的 LLM 端点,它会自动适配协议。 2. 环境配置 在pom.xml中添加依赖(Solon 不需要父 POM,独立工作): <dependency> <groupId>org.noear</groupId> <artifactId>solon-ai</artifactId> <version>${solon.version}</version> </dependency> 这会引入所有内置的方言适配器(OpenAI、Ollama、Gemini、Anthropic、DashScope)。 3. 配置方式 3.1 通过 YAML 配置(推荐) solon.ai.chat: demo: apiUrl: "http://127.0.0.1:11434/api/chat" # 完整 URL,非 baseUrl standard: "ollama" # 接口规范(方言标识) model: "llama3.2" # 模型名称 headers: x-demo: "demo1" 然后通过@Bean注入一个可以直接使用的ChatModel: import org.noear.solon.ai.chat.ChatConfig; import org.noear.solon.ai.chat.ChatModel; import org.noear.solon.annotation.Bean; import org.noear.solon.annotation.Configuration; import org.noear.solon.annotation.Inject; @Configuration public class AiConfig { @Bean public ChatModel chatModel(@Inject("${solon.ai.chat.demo}") ChatModel model) { return model; } } 3.2 编程式 Builder @Bean public ChatModel chatModel() { return ChatModel.of("http://127.0.0.1:11434/api/chat") .standard("ollama") // 或 .provider("ollama") .model("llama3.2") .timeout(Duration.ofSeconds(60)) .build(); } 3.3 支持的模型提供商 standard(或provider)字段选择方言: 方言标识 apiUrl 示例 模型 openai(默认) https://api.openai.com/v1/chat/completions GPT、DeepSeek、Qwen、GLM、Kimi 等 ollama http://127.0.0.1:11434/api/chat 本地 Ollama 模型 anthropic https://api.anthropic.com/v1/messages Claude gemini https://generativelanguage.googleapis.com/... Gemini dashscope 阿里云 DashScope 端点 Qwen(DashScope 原生) 4. 同步调用(最简单的方式) 最基本的用法——发送提示词,获取完整响应: import org.noear.solon.ai.chat.ChatModel; import org.noear.solon.ai.chat.ChatResponse; import org.noear.solon.annotation.Inject; import org.noear.solon.annotation.Component; @Component public class ChatService { @Inject ChatModel chatModel; public String ask(String question) throws IOException { ChatResponse resp = chatModel.prompt(question).call(); return resp.getMessage().getContent(); } } 仅三行业务代码,搞定。 5. 流式调用(实时响应) 对于聊天机器人和助手类应用,流式响应是刚需。ChatModel返回 Reactor 的Flux<ChatResponse>: import reactor.core.publisher.Flux; public Flux<String> askStream(String question) throws IOException { return chatModel.prompt(question) .stream() .filter(resp -> resp.hasContent()) // 跳过空块 .map(resp -> resp.getContent()); } 如果你使用 Solon Web Reactive,可以直接把Flux返回给 SSE 端点: import org.noear.solon.web.sse.SseEvent; import org.noear.solon.annotation.Mapping; import reactor.core.publisher.Flux; @Mapping("/chat/stream") public Flux<SseEvent> chatStream(String prompt) throws IOException { return chatModel.prompt(prompt) .stream() .filter(resp -> resp.hasContent()) .map(resp -> new SseEvent().data(resp.getContent())); } 流式协议根据提供商不同,使用标准 SSE 或x-ndjson。 6. 对话记忆:ChatSession LLM 本身是无状态的,每次请求都需要传入历史上下文。ChatSession自动帮你完成这件事。 6.1 基本用法 import org.noear.solon.ai.chat.ChatSession; import org.noear.solon.ai.chat.session.InMemoryChatSession; ChatSession session = InMemoryChatSession.builder() .sessionId("user-123") .maxMessages(10) // 保留最近 10 轮 .build(); // 第一轮 ChatResponse resp1 = chatModel.prompt("你好!") .session(session) .call(); // 第二轮——模型记得刚才的对话 ChatResponse resp2 = chatModel.prompt("我刚才说了什么?") .session(session) .call(); 6.2 Web 应用中的用户级会话 在实际的 Web 应用中,每个用户需要一个独立的会话: import org.noear.solon.annotation.Controller; import org.noear.solon.web.sse.SseEvent; import reactor.core.publisher.Flux; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Controller public class ChatController { @Inject ChatModel chatModel; final Map<String, ChatSession> sessionMap = new ConcurrentHashMap<>(); @Mapping("/chat") public Flux<SseEvent> chat(String sessionId, String prompt) throws IOException { ChatSession session = sessionMap.computeIfAbsent(sessionId, k -> InMemoryChatSession.builder().sessionId(k).build()); return chatModel.prompt(prompt) .session(session) .options(o -> o.systemPrompt("你是一个友好、乐于助人的助手。")) .stream() .filter(ChatResponse::hasContent) .map(resp -> new SseEvent().data(resp.getContent())); } } 6.3 内置会话实现 实现类 存储方式 适用场景 InMemoryChatSession 本地 Map 开发、单节点 FileChatSession 文件系统 CLI 工具、桌面应用 RedisChatSession Redis 生产环境、分布式部署 7. 调优:ChatOptions 通过ChatOptions可以在每次请求中控制模型行为: chatModel.prompt("写一首关于 Java 的诗") .options(o -> o .temperature(0.8) .max_tokens(500) .top_p(0.9) .systemPrompt("你是一位富有创造力的诗人。")) .call(); 部分常用参数: 方法 说明 temperature(val) 采样温度(0.0–2.0) max_tokens(val) 最大输出 Token 数 top_p(val) 核采样参数 top_k(val) Top-K 采样 frequency_penalty(val) 降低重复 presence_penalty(val) 鼓励新话题 tool_choice(val) 强制工具调用:none、auto、required或工具名 role(val) Agent 角色(role + instruction 可自动生成 systemPrompt) instruction(val) Agent 指令(role + instruction 可自动生成 systemPrompt) systemPrompt(val) 本次请求的系统提示词(完全定制) 8. 多消息 Prompt 有时候你需要的不只是一条消息。可以用Prompt和ChatMessage构建更复杂的上下文: import org.noear.solon.ai.chat.Prompt; import org.noear.solon.ai.chat.message.ChatMessage; Prompt prompt = Prompt.of( ChatMessage.ofUser("Hello, how are you?"), ChatMessage.ofAssistant("Bonjour, comment allez-vous?"), ChatMessage.ofUser("What is your name?") ); ChatResponse resp = chatModel.prompt(prompt).options(o -> o.systemPrompt("你是一名中英翻译专家。")).call(); 9. 完整实战:知识感知聊天机器人 下面是一个轻量级的 RAG 模式示例——用ChatMessage.ofUserAugment()把上下文注入到 Prompt 中: import org.noear.solon.ai.chat.ChatModel; import org.noear.solon.ai.chat.ChatResponse; import org.noear.solon.ai.chat.message.ChatMessage; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; @Component public class KnowledgeChatbot { @Inject ChatModel chatModel; public String answer(String question, String referenceContext) throws Exception { // 将参考上下文与用户问题合并 ChatMessage augmented = ChatMessage.ofUserAugment(question, referenceContext); ChatResponse resp = chatModel.prompt(augmented) .options(o -> o .temperature(0.3) .systemPrompt("你是一个知识渊博的助手。请基于提供的参考资料回答。")) .call(); return resp.getMessage().getContent(); } } 这种模式——用上下文增强用户输入,再调用模型——正是 Solon AI 中 RAG(检索增强生成)的基础。 10. 下一步 ChatModel只是入口点。Solon AI 还提供: 工具调用— 用@ToolMapping定义 LLM 可调用的 Java 方法 Talent 系统— 可复用的能力模块 Agent—ReActAgent和TeamAgent实现多步推理 RAG 流水线— 完整的文档加载、切分、嵌入、检索流程 MCP 协议— 连接 MCP 服务器使用外部工具 完整文档参见官方指南: 👉https://solon.noear.org/article/918(模型构建) 👉https://solon.noear.org/article/920(API 参考) 你有没有在 Java 中集成过 LLM?最大的痛点是什么?欢迎在评论区分享,可能会在后续文章中专门讨论。

优秀的个人博客,低调大师

Graph + AI 如何驱动大模型走进产业核心

本文基于演讲内容与 PPT 材料整理,部分数据与案例已脱敏,仅供参考交流。 PPT 下载: https://discuss.nebula-graph.com.cn/t/topic/17404 本文首发于「NebulaGraph 」公众号,更多产品咨询请访问「NebulaGraph 」官网,添加技术交流群方式,详见文末 很高兴在这个夜晚与大家在线上相遇。我是来自 NebulaGraph Product VP 杨哲超。今天,我想与各位分享在AI 与图数据库交叉领域的一些思考与实践。 图数据库或许对很多开发者来说仍是一个相对垂直和小众的产品,但实际上,它与人工智能的关系极为紧密。在大模型兴起之前,知识图谱已是 AI 体系中不可或缺的技术组成部分,而图数据库,正是知识图谱的最佳底座,专注于解决多元异构数据的融合、分析与决策问题。 在数据库权威排名 DB-Engines 上,NebulaGraph 在全球图数据库类别中排名第二,在国内则位居榜首。我们不仅支持超大规模图数据、具备高性能与低构建成本等特性,更在 AI 时代持续探索图与智能的深度融合。 一、AI 的期望与现实:为何大模型难以深入产业? 当前 AI 行业面临一个明显矛盾:一方面,政策与产业界对大模型寄予厚望。从国家“十五五”规划对人工智能的全方位赋能要求,到高盛预测未来数年在生成式 AI 上近 1 万亿美元的投入,无不显示各界对 AI 推动生产效率提升的期待。 然而另一方面,大模型在生产领域的规模化商业回报尚未显现。据 Gartner 预测,超过 30% 的生成式 AI 项目将在概念验证阶段后被放弃,原因涉及数据质量、风险控制、成本与业务价值不明确等。MIT 的研究进一步指出,最终仅有约 5% 的 AI 项目能进入生产环境并实现可衡量的业务价值。 我们认为,造成这一割裂的核心原因有两个: 1. 模型幻觉问题:本质是基于概率的预测模型,其设计目标并非严格遵循事实,导致在高精度、高可靠性要求的场景中,输出结果难以信赖。 2. 数据孤岛问题:即使是最强大的通用大模型,也难以接触到各行业内部的专有数据,例如政务内网、企业业务系统等,导致模型在垂直领域中“看不见”关键信息,难以触及生产核心。 二、GraphRAG:从检索答案到核查事实的范式升级 最近 Google 推出的 NotebookLM 之所以受欢迎,正是因为它通过引入外部知识源,显著降低了模型幻觉。这背后的关键机制正是 RAG. RAG 的本质,是让大模型从记忆里找答案转变为到事实中去核查。而目前常见的 RAG 索引方式主要有三种:全文索引、向量索引和图索引。 1. 全文索引:基于关键词匹配,略显生硬,依赖倒排索引等技术。 2. 向量索引:更接近语义检索,能够理解内容含义,适合推荐、相似性查询等场景。 3. 图索引:核心是找关系,能够保留数据中丰富的关联信息,避免信息被切割丢失。 相比前两者,GraphRAG 可视为传统 RAG 的革命性升级。它将知识图谱与图技术深度整合到大模型架构中,显著提升了上下文关联性、推理深度与结果可解释性。 三、GraphRAG 的挑战与 NebulaGraph 的破局之路 尽管 GraphRAG 优势明显,但其应用仍面临两大门槛,这让很多想尝试的开发者望而却步: 技术门槛高:涉及命名实体识别、关系抽取、社区划分等多项 NLP 技术,需要大量标注数据与模型调优。 使用成本高:构建与使用成本高出向量索引两个数量级,且依赖大量 GPU 集群进行推理。 为了不让 GraphRAG 沦为 PPT 里的摆设,NebulaGraph 核心做了两件事: 1. 降低技术门槛:让业务人员也能驾驭图 我们不希望 GraphRAG 是一个无法干预的黑盒。通过提供可解释、可干预的工具,业务人员可以根据行业理解在图谱中直接插入规则。这种人工干预+模型概率的结合,才能保障产品在生产环境里的可靠性,真正实现: 透明可控:可视化流程 + 全链路审计,节点与关系一目了然; 灵活定制:支持在节点与边上插入业务规则,无需重新训练即可快速迭代; 高效协作:拖拽式无代码配置,降低操作与调优难度。 2. 降低使用成本:打造端到端自动化工具链 我们将 GraphRAG 从科研项目转变为标准产品,大幅压缩实施周期与成本: 传统流程需经历:数据清洗 → 分块 → 实体抽取 → 关系抽取 → 社区发现 → 摘要生成 → 图入库 → 接口封装,全程约需 2–4 周 ; NebulaGraph 自动化方案: 通过大模型自动识别数据领域,覆盖约 65% 的高频行业场景; 高集成封装,开箱即用,数小时内即可完成图谱构建,初始 F1 值可超 0.85; 遵循第一性原理优化,建索引效率较微软 GraphRAG 提升约两个数量级。 四、实战案例:基于图智能的运维根因定位 分享一个我们最近在头部运营商落地的真实案例。在处理海量运维工单时,传统的做法是靠老专家的经验,在成千上万行日志里“捞”根因,不仅累,还容易漏。 NebulaGraph 的解决方案是,把工单按时间线来“连线成图”。 通过将每一个工单子图融合成一张全局知识大图,再利用 PageRank 等算法自动计算节点的权重。最终的效果非常惊艳: 定位准确率提升至 85%; 平均定位时间从 60 分钟降至 5 分钟,效率提升 12 倍。 该方法已申请发明专利,并适用于金融、电力、制造等所有具备时序日志与告警体系的场景。 (感兴趣的小伙伴,可以借鉴类似案例,如 BOSS 直聘 20 秒根因定位) 五、趋势展望:Graph + AI 推动大模型走向专业决策 站在现在看未来,我们认为 Graph + AI 会有两个显著的信号: 1. 从孤岛走向知识中枢:现在的 AI 很多是单点应用(比如一个简单的聊天机器人)。未来,企业会更倾向于把自有数据连接成一张大图,构建真正的企业大脑,支持更复杂的业务决策。 2. 从事后分析走向事前预测:现在的 RAG 大多是静态的检索,未来它会更具动态性。大模型将不只是告诉你发生了什么,而是能参与到事中的干预,甚至预测可能发生的风险。 六、愿景:共建开放、智能的图数据生态 作为国内领先的图数据库厂商,NebulaGraph 将持续推进图与 AI 的融合创新: 推动 GQL 标准化与 GraphRAG 架构规范化,降低行业使用门槛; 与高校、研究机构合作,培育“图 + AI”复合型人才; 开放产业案例库,分享跨行业实践,加速技术落地; 积极集成 Memory Zero、Memory Machine 等 AI 组件,构建更开放的图智能生态。 我们相信,图 + AI 将成为企业数字化转型的核心引擎,但技术落地不是一家公司能完成的,希望未来能与更多开发者一起,赋能千行百业实现真正意义上的智能升级。 ✦ 如果你觉得 NebulaGraph 能帮到你,或者你只是单纯支持开源精神,可以在 GitHub 上为 NebulaGraph 点个 Star! 每一个 Star 都是对我们的支持和鼓励✨ GitHub:https://github.com/vesoft-inc/nebula 官网:https://www.nebula-graph.com.cn/ 论坛:https://discuss.nebula-graph.com.cn/ 技术交流群:NebulaGraphbot ✦ ✦

优秀的个人博客,低调大师

微软发布由 Sora 驱动的 Bing Video Creator

微软 Bing宣布将在应用中引入全新的视频生成功能,该功能由 OpenAI 的 Sora 模型让用户根据文字提示生成视频。 所有用户只要登录微软账户,就可以使用必应应用程序免费创建 10 个视频片段,而这之后的视频,用户需要为每个视频支付 100 微软奖励积分才能生成。这些积分可通过使用必应搜索或在微软商店购物获得,例如,使用必应在个人电脑上每搜索一次可获得 5 点积分,每天的积分上限为 150 点。 OpenAI 与微软有着长期的合作关系,但只有付费用户才能使用 Sora 的视频生成功能。它与微软必应的整合标志着它将首次免费提供。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册