从零开始构建大模型(LLM)应用,看这篇文章就够了

从零开始构建大模型(LLM)应用 大模型(LLM)的应用开发是一个不断进化的过程,它涉及到扩展应用场景、解决新问题、添加新功能,并持续改进LLM产品。在继续进行人工智能开发的过程中,保持灵活,勇于尝试新的方式,以最终用户的需求为中心。这样,我们可以不断推动技术前进,让产品更贴合用户需求,更好地服务于实际应用。 阅读详情

大模型(LLM)已经成为当前人工智能的重要部分。但是,在这个领域还没有固定的操作标准,开发者们往往没有明确的指导,需要不断尝试和摸索。

在过去两年中,我帮助了许多公司利用LLM来开发了很多创新的应用产品。基于这些经验,我形成了一套实用的方法,并准备在这篇文章中与大家分享。

这套方法将提供一些步骤,帮助需要的小伙伴在LLM应用开发的复杂环境中找到方向。从最初的构思到PoC、评估再到产品化,了解如何将创意转化为具有影响力的应用程序。

1、为什么标准化流程至关重要

大模型(LLM)的发展非常快,几乎每天我们都能听到一些新的创新。这种快速发展让人感到既兴奋又有点乱——你可能会感到迷茫,不知道接下来该怎么办,或者怎样用这些大模型(LLM)来推动公司业务的发展。

采用一个标准化的流程对启动新项目非常有帮助,主要能带来以下几个好处:

  • 统一流程 — 一个统一的流程可以帮助团队成员更好地协作,特别是在混乱的时候,也能让新人更顺利地加入团队。
  • 设定清晰的里程碑 — 这是一个直接的方法,帮你跟踪工作进度,评估成效,确保你正朝着目标前进。
  • 找出决策点 — 在开发大模型应用时,我们会遇到很多未知情况和需要做的小实验(PoC)。设定清晰的决策点可以帮我们降低风险,确保开发工作始终高效。

2、大模型工程师的必备技能

与软件研发领域的其他角色不同,专门从事大模型开发的工作需要一种全新的职业角色:大模型工程师,也就是我们常说的AI工程师。

大模型工程师需要具备多种技能,包括:

  • 软件工程技能 — 这部分工作很像拼积木,需要把各种技术组件正确组合并确保它们能够协同工作。
  • 研究技能 — 深入了解大模型的PoC性质非常重要。虽然制作一个看起来很好的演示应用相对简单,但要将这种演示转化成真正有用的解决方案,需要不断试验和调整。
  • 商业和产品理解 — 了解业务目标和流程比单纯遵循我们设定的技术架构更重要。能够将手工过程转换成自动模型是大模型工程师的一项重要技能。

在写这篇文章的时候,大模型(LLM)工程还是一个非常新的领域,招聘合适的人才可能会有些困难。候选人可以考虑那些有后端开发、大数据或有算法背景的,他们可能会更适合这个职位。

软件工程师可能转换会比较顺畅,因为这里的PoC工作更多的是偏向工程操作,而不像传统的人工智能那样偏算法研究。不过,我也看到很多算法工程师成功地转换成大模型工程师,我今年年底准备出版的一本书中有介绍如何使用python编写大模型api的介绍。只要愿意接受并学习新的软技能,你已经走在了LLM应用的道路上了!

3、大模型(LLM)应用开发的关键要素

不像传统的后端应用(比如CRUD),在大模型(LLM)的开发中,目前没有一套固定的操作指南。像在人工智能领域的其他领域一样,开发这类应用需要你具备一种研究和尝试的心态。

要掌控这种复杂性,我们需要把大任务拆分成一系列小任务,尝试这些任务,然后挑选出最有希望的一个继续深入。

通过多个项目的实践经验,构建大模型(LLM)应用开发拥有一种尝试的心态是极其重要的。这意味着我们需要花时间去探索一个研究方向,最终发现这个方向“行不通”、“不够好”或者“不值得继续”。这是完全可以接受的——实际上,这表示我们在找到符合我们业务的专有大模型应用。

4、尝试的重要性:这是核心流程

有时候,我们第一个小应用可能会失败,这时我们就需要稍微调整方向,尝试另一个新的方向。往往这种调整后的新方向能带来意想不到的结果。

在这里插入图片描述

这就是为什么在设计我们的最终解决方案之前,我们需要从简单做起并小心规避风险。

  • 设定一个“预算”或时间范围。 我们来看看在接下来的几周内能完成什么,然后再决定是否继续。通常来说,2-4周的时间足以帮我们了解基本的概念验证(PoC)。如果这个方向看起来有潜力,我们就继续投入资源去完善它。
  • 实验(PoC) — 无论是选择自下而上还是自上而下的方式进行PoC,我们的目标都是尽可能提高成功率。第一轮实验结束时,应该得到一些初步的产品概念(PoC),利益相关者可以初步使用并评估这些产品。
  • 复盘 — 研究阶段结束时,我们能够明确这个应用的可行性、局限性以及成本。这有助于我们决定是否将其转化为产品,以及如何设计最终的产品和用户体验。
  • 产品化 — 开发一个准备好投入生产的版本,并按照软件工程的标准最佳实践,将其与其他解决方案整合,并实施反馈与数据收集机制。

要想好好执行这种注重实验(PoC) 的过程,我们需要决定如何策划和进行这些PoC:

4.1从简单开始:自下而上的方法

很多人一开始就直接使用成熟的Langchain或类似的复杂多链代理系统,但我发现,采取“自下而上”的方法往往能获得更好的效果。

从最简单的开始,极其简单,遵循“一条指令掌控一切”的理念。虽然这种方法可能看起来有点非主流,一开始可能会出现一些不尽如人意的结果,但它能帮助我们为系统建立一个基础水平。

从这点开始,需要持续改进prompt,使用prompt来获得更好的结果。当发现简化方案存在缺陷时,尝试通过增加新的处理分支来弥补这些不足。

在设计大模型(LLM)工作流程图中的每一个节点,或者说LLM专用架构时,我会遵循LLM三角原则来决定何时添加分支、何时进行分割,或者通过使用prompt来加强基础,从而更好地利用每一次机会。

在这里插入图片描述

例如,若要采用自下而上的方法实现“本地语言 SQL 查询”,我们会从一个基本的步骤开始:将数据库的结构(schema)发送给大模型(LLM),让它根据这些信息生成 SQL 查询语句。

在这里插入图片描述

通常,这并不会与“自上而下的方法”冲突,而是先进行一个额外的步骤。这样我们能快速展示一些初步成果,帮助领导层看到进展,从而决定是否继续投入更多资源。

4.2 从总体布局着手:自上而下的策略

“我们知道,大模型(LLM)的工作流程并不简单,为了实现我们的目标,我们很可能需要一些特定的工作流程或LLM专属架构。”

自上而下的策略正是基于这个理解,从第一天起就开始设计LLM专用架构,并从一开始就实施其各个步骤和环节。

采用这种方法,我们可以将工作流架构作为一个整体进行测试,从而充分利用整个系统的潜力,而不是逐个细节进行优化。

在这里插入图片描述

例如,使用自上而下的方法来实现“本地语言SQL查询”,我们会先从设计整体架构开始,然后再开始编码,直接进入完整的实施阶段:

在这里插入图片描述

4.3寻找合适的平衡点

当开始使用大模型(LLM)进行PoC时,很可能会从一个极端开始——不是过于复杂的自上而下策略,就是过于简单的一次性尝试。实际上,没有哪一种方法总是最佳的。

在理想状态下——在开始编写代码和进行模型试验之前,应该制定一个有效的标准操作程序(SoP)并尝试模拟一个专家。但实际上,模拟专家是非常困难的,有时甚至可能无法接触到相关的专家。

在最初尝试确定一个有效的架构或标准操作程序(SoP)时,我发现这个过程充满挑战,因此在开始真正产品实施之前,进行初步的验证是非常有价值的。然而,这并不意味着所有事情都必须执行得非常简化。如果我们已经明白某些步骤必须细分为更小的部分,需要马上实施并验证。

在设计解决方案时,我们应该运用大模型三角原则(LLM Triangle Principles),并正确模拟手动过程,以确保方案的实用性和有效性。

4.4优化解决方案:最大化利用资源

在PoC阶段,我们不断地增加更多的复杂性层级:

  • prompt 技术 — 比如使用很少的样本来训练模型、分配不同的角色给模型,或者利用动态样本学习来改进。
  • 扩大考虑范围 — 从处理简单的数据信息到处理复杂的查询生成流程,这样可以帮助我们得到更好的结果。
  • 尝试多种模型 — 不同的模型适合不同的任务。大模型虽然功能强大,但成本较高,寻找更专门针对某一任务的模型往往更经济。
  • 简化prompt — 通过简化模型的prompt和期望输出,可以让模型反应更快。
  • 缩短prompt 长度和减少处理步骤 — 这可以减少模型需要处理的数据量。会发现简化操作有时候甚至能提高处理质量!

不过要注意,过度简化有时会影响结果的质量,因此在做出这些调整前,进行一些基本的效果测试是很重要的。

将复杂流程拆分成更小的步骤,可以使得每个子步骤的优化更加容易实现,也更有效。

请注意,这种做法可能会增加解决方案的复杂度或影响性能(例如,增加处理的Tokens)。为了降低这种风险,应当尽量使用简洁的prompt和更小的模型。

一个基本的原则是,如果系统提示的变化在标准操作程序(SOP)的某个环节能够显著提高结果,那么进行分割通常是最好的选择。

4.5大模型(LLM)验证的结构

我个人比较喜欢从一个基础的Jupyter Notebook开始PoC,这个Notebook使用Python、Pydantic和Jinja2来配置:

  • 使用Pydantic:定义模型输出的结构化模式,这是确保输出数据符合预期格式的关键。
  • 利用Jinja2:编写模板来生成模型所需的提示,这对控制模型的输入非常重要。
  • 设定结构化输出格式:采用YAML来格式化输出。这样可以确保模型按照既定的“思考步骤”进行,严格遵循我的标准操作程序(SOP)。
  • 应用Pydantic的验证功能:验证输出的准确性,必要时可以进行重试,这是保证输出质量的一个重要步骤。
  • 代码结构化:将代码组织成Python文件和包,这不仅有助于维护,也方便未来的扩展和管理。

在更广泛的应用中,可以使用诸如openai-streaming之类的工具,这样可以方便地实现流处理;使用LiteLLM,以便在不同的服务提供商之间使用标准化的大模型(LLM)软件开发工具包(SDK);或者使用vLLM来运行开源的大模型。这些工具都可以帮助您更有效地使用和部署大模型技术。

4.6通过基础测试和评估保证质量

基本测试是一种评估项目质量的有效方法,确保项目的成功率达到或超过您预先设定的标准。

为此,您需要列出一些您已经成功处理的案例,并确保这些案例能持续保持成功的状态(或至少确保持续投入是值得的)。将这个过程视为表格驱动的测试可能会帮助您更系统地进行管理和评估。

评估“生成式”解决方案(比如写作)的效果,要比使用大模型(LLM)处理其他类型的任务(如分类、提取信息等)复杂得多。对于这些任务,我们可能需要使用更高级的模型(如GPT-4、Claude Opus或LLAMA3–70B)来帮助评判效果。

另外,一个好方法是在生成性内容输出之前,先产生一些确定性的内容。这种内容因为更容易进行测试,所以可以帮助我们更好地评估整体输出的质量。

cities:
  - New York
  - Tel Aviv
vibes:
  - vibrant
  - energetic
  - youthful
target_audience:
  age_min: 18
  age_max: 30
  gender: both
  attributes:
    - adventurous
    - outgoing
    - culturally curious
# ignore the above, only show the user the `text` attr.
text: Both New York and Tel Aviv buzz with energy, offering endless activities, nightlife, and cultural experiences perfect for young, adventurous tourists.

有一些前沿而有前途的解决方案非常值得探索。在评估基于RAG的解决方案时,我发现特别有用的是这几个工具:DeepChecks、Ragas和ArizeAI。可以去了解一下。

5、关键决策:复盘的重要性

每次完成重要PoC或达到阶段性目标后,我们都应该停下来,仔细认真复盘,然后做出关键决策,决定是否以及如何继续这条路。

这时候,PoC应该已经有了一个明确的成功率基准,我们也会清楚哪些地方还需要改进。

这是一个很好的开始,讨论这个解决方案如何产品化以及这将带来哪些影响,我们需要综合考虑以下几个问题:

  • 这个解决方案在产品中将如何实现?
  • 我们面临哪些限制和挑战?我们将如何应对这些问题?
  • 当前的响应速度如何?它能满足我们的需求吗?
  • 应该设计怎样的用户体验?我们可以利用哪些界面技巧?流式处理能起到什么作用?
  • 预计将在Tokens上花费多少?我们是否可以通过使用更小的模型来降低成本?
  • 什么是优先级?有没有什么挑战可能成为项目的障碍?

如果我们认为已经达到了一个“足够好”的基线,并且能够解决我们面临的问题,那么我们将继续投资并改进这个项目,同时确保其性能不会退化,并执行必要的基础测试。

6、从PoC到产品:实现您的解决方案

最后,我们必须将我们的工作转化为产品。像处理任何成熟的解决方案一样,我们需要引入诸如日志记录、监控、依赖管理、容器化和缓存等生产工程的基本概念。

虽然这是一个复杂的领域,但幸运的是,我们可以借鉴传统生产工程的许多方法,并且还可以使用很多现成的工具。

虽然如此,我们还需要特别关注一些与大模型(LLM)原生应用相关的细节问题:

  • 反馈循环 — 我们应该如何衡量成功?是仅靠简单的“点赞/点踩”机制,还是需要一个更复杂的系统,来考虑我们解决方案的实际应用情况?

    同样重要的是要收集这些数据;随着时间的推移,这可以帮助我们重新定义我们的基准线,或者使用动态少示例技术微调结果,或者对模型进行微调。

  • 缓存 — 不同于传统软件工程,当我们的解决方案包含生成内容时,实现缓存可能非常有挑战性。为了解决这个问题,可以探索缓存相似结果的方法(例如使用RAG),或通过设定严格的输出格式来减少生成内容。

  • 成本追踪 — 许多公司倾向于从使用功能全面的模型(如GPT-4或Opus)开始,但在生产环境中,成本可能迅速增加。为了避免在最后成本上惊讶,确保测量输入/输出的Tokens 数量,并持续跟踪你的工作流程的影响(没有这些实践,以后很难进行性能分析)。

  • 可调试性和追踪 — 确保已经部署了合适的工具来跟踪可能出现的问题,并在整个过程中进行追踪。这通常涉及保留用户的输入以供后续调查,并建立一个追踪系统。要记住:“与传统软件不同,人工智能的失败往往没有实际反馈可追踪的!”

7、总结

大模型(LLM)的应用开发是一个不断进化的过程,它涉及到扩展应用场景、解决新问题、添加新功能,并持续改进LLM产品。

在继续进行人工智能开发的过程中,保持灵活,勇于尝试新的方式,以最终用户的需求为中心。这样,我们可以不断推动技术前进,让产品更贴合用户需求,更好地服务于实际应用。

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线 ↓

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容:

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容:

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容:

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容:

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉优快云大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

​

何构建一个通用的大模型智能体(LLM Agent) 为什么要构建一个通用的 Agent?因为它是一个出色的工具,可以用来原型化你的用例,并为设计你自己的定制 Agent 架构奠定基础。 阅读详情

相关推荐

企业私有化大模型部署:从POC到生产环境

选择1-2个最具代表性、价值最高或最紧急的业务场景进行验证,而不是试图覆盖所有设想的功能。设定清晰、可达成的POC成功指标。例如:“在指定的客服FAQ数据集上,模型的Top-1准确率达到75%以上,平均响应时间低于2秒。POC阶段应控制人力、物力、财力的投入,避免过度工程化。为POC设定明确的时间限制,通常2-4周为宜,确保项目快速推进。POC目标与范围回顾。数据、模型、环境、方法描述。详细的评估结果(定量+定性)。遇到的问题与挑战。成本与资源消耗估算。风险分析。

AI天才研究院 1382

【AI大模型】RAG 系统从 POC 到生产应用:全面解析与实践指南

RAG系统通过结合大型语言模型(Large Language Model,简称LLM)与检索机制,显著提升了生成内容的准确性和相关性。其核心在于利用向量数据库存储和检索大量上下文信息,以辅助生成模型在生成文本时做出更明智的决策。这种方法不仅提高了生成内容的质量,还增强了模型的解释性和可控性。尽管RAG系统具有诸多优势,但目前大多数应用仍处于POC阶段,仅有少数成功案例成功进入生产环境。这主要归因于构建RAG系统的复杂性,以及将其从实验环境迁移到生产环境所需考虑的各种因素。

datian1234的博客 1424

从零开始:基于LLM大模型构建智能应用程序的完整指南

在我们即将发布的帖子中,我们将讨论 LLM 链、意图识别、添加特定于任务的工具、集群、创建推荐系统、微调开源 LLM 以及我们测试系统的方式等话题不断改进并从研究和开源社区中学习。在零样本学习中,语言模型被要求在没有明确示例的情况下完成任务,而在少样本学习中,为模型提供了有限数量的示例,或“少样本”,嵌入在提示中. 提示对于将模型引导到一个方向并避免产生幻觉非常重要。根据您的需要,其他方法可能更有效。LLM大模型是一种基于深度学习技术的模型,它可以自动学习并理解大量的数据,从而实现高效、准确的预测和分类。

AI天才研究院 1万+

如何构建基于大模型的App

ChatGPT 的出现让大模型再一次成为业界的关注热点,然而,并不是每个组织都要去训练及生成大模型的,而且各个组织的技术积累和计算资源也不太允许这样去做。更多的时候, 我们还是基于大模型开发业务应用。所谓智能原生(AI Native),往往是指那些没有大模型就无法成立的应用,那是一些新的业务机会和挑战。很多时候, 我们还只是Applied AI, 即通过AI 尤其是大模型为应用赋能。不论是AI 原...

我相信...... 911

从零构建AI Agent:LLM大模型应用开发实践

1.1 AI Agent的定义与分类1.2 AI Agent的核心功能与挑战1.3 AI Agent的发展历程与趋势通过上述设计,我们可以看到这个目录大纲已经涵盖了AI Agent的构建、应用、优化以及未来展望,每个章节都细化为二级和三级目录,确保内容的逻辑性和完整性。接下来,我们将进一步细化每个章节的内容,确保满足所有的要求。人工智能(Artificial Intelligence,AI):人工智能是一门研究、开发和应用使计算机模拟人类智能行为的科学。代理(Agent)

AI大模型应用之禅 931

Keil MDK v6迁移指南:从AC5到AC6的编译器升级与工程适配

编译器是嵌入式开发的底层基石,决定了代码的执行效率与工程的可维护性。随着ARM工具链向LLVM/Clang架构演进,Arm Compiler 6(AC6)正逐步取代经典的AC5,成为Keil MDK的核心编译引擎。AC6在C11标准支持、代码优化、诊断信息及LTO链接优化上全面超越AC5,但迁移过程中往往伴随内联汇编重写、类型检查严格化、库兼容性等问题。理解编译器差异、掌握CMSIS-Toolbox的工程描述机制,能帮助嵌入式工程师在Cortex-M系列项目中平滑过渡。本文结合Cortex-M4量产工程实战

weixin_29189363的博客 237

从零开始构建LLM应用程序的详细步骤,非常详细收藏我这一篇就够了!

大型语言模型(LLM)正迅速成为现代人工智能的基石。然而,目前尚未有既定的最佳实践,所以研究者们没有明确的路线图可遵循,经常陷入困境需要重新开始。在过去两年里,我帮助多个组织利用LLM构建创新应用。通过这段经历,我开发出了一种久经考验的方法来创建创新解决方案(受LLM.org.il社区的见解影响而形成),我将在本文中分享这个方法。本指南为在复杂的LLM原生开发环境中导航提供了清晰的路线图。您将了解如何从构思转到实验、评估和产品化,释放您创造开创性应用的潜力。

2401_85375151的博客 916

基于STM32与OV7670的嵌入式视频监控系统设计与实现

本文详细介绍了基于STM32单片机与OV7670摄像头的嵌入式视频监控系统设计与实现。从硬件选型、电路设计到软件开发,涵盖了摄像头驱动、TFT显示优化及图像处理等关键技术,提供了实用的调试技巧和性能优化方案,为低成本、高效率的视频监控系统开发提供完整解决方案。

desk3的博客 802

从零开始构建大模型(LLM)应用,大模型入门到精通,收藏这篇就足够了!

大模型(LLM)的应用开发是一个不断进化的过程,它涉及到扩展应用场景、解决新问题、添加新功能,并持续改进LLM产品。

2401_82469710的博客 729

【C++】 详解 lower_bound 和 upper_bound 函数(看不懂来捶我!!!)

这两个函数是我在 LeetCode 上做题见到,看到不熟悉的函数 lower_bound 和 upper_bound让我感觉很难受,于是在C++ 官网去学习,例子就一个是最基础的,我看明白了。虽然是两个函数的接口就两个,但是有时候看别人使用的时候,里面参数还可以放不同的仿函数,我懵逼了。就去网上搜,但是大家讲解的都是它的第一个接口。我只能再把文档一遍一遍过,代码一遍遍的尝试,调试。最终通过查阅资料将其总结如下。

weixin_45031801的博客 9万+

ROS Navigation global_planner框架解析

ROS Navigation global_planner框架解析主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。主要讲解global_planner关键配置参数含义及关键函数Astar,Dijkstra,QuadraticCalculator::calculatePotential,PotentialCalculator::calculatePotential,GridPath::getPath,GradientPath::getPath.

Jeff_Lee_的博客 4694

手搓LLM大模型:从零开始构建大语言模型

在人工智能的世界里,大型语言模型(LLMs)无疑是最引人注目的明星之一。这些深度神经网络模型的出现,为自然语言处理(NLP)领域带来了前所未有的变革。那么,这些模型究竟是如何工作的?它们又是如何从简单的语言处理任务进化到能够理解和生成复杂文本的呢?

2301_81887304的博客 1844

RingBuffer 环形缓冲区----镜像指示位

称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。这个宏定义用于计算向下对齐的地址。size和align。size是要对齐的内存大小,align是所需的对齐大小。这个宏返回一个值,该值是size向下对齐到align边界后的地址。例如,假设我们有一个 32 位的系统,并且我们需要将数据对齐到 64 位的边界。我们可以使用在这个例子中,data数组的大小为 10 个元素,我们需要将其对齐到 8 字节边界。宏返回data。

呵呵哒!的博客 2408

大模型LLM | 从零开始构建一个通用AI Agent 智能体

若能访问一系列工具(例如:代码执行或网络搜索),AI Agent 智能体能够决定采用何种工具、如何运用它,并根据输出结果进行迭代优化。这种灵活性使得系统能以最低限度的配置应对多样化的应用场景。

Androiddddd的博客 1342

安卓刷Windows太难?这款手机平板双系统刷机工具,小白也能轻松拿捏!(小白福音!手机平板专用,一键搞定安卓刷 Windows 双系统!)

安卓刷Windows太难?这款手机平板双系统刷机工具,小白也能轻松拿捏!(小白福音!手机平板专用,一键搞定安卓刷 Windows 双系统!)

XiaoqiangClub的博客 4676

LVGL 实战:倒计时翻页钟

环境:LVGL 9.x + PC 模拟器。每个数字做成上下两半的卡片,秒变时用绕中缝翻页:上半旧页折叠下去、下半新页展开上来,配合阴影遮罩做出立体感。从 02:00 倒计时到 0,闪一下再重置。界面文案用英文(默认字体无中文)。

摸鱼专家 213

大模型开发工作流终极指南:从零构建端到端LLM应用

大型语言模型(LLM)开发工作流是当今AI领域最热门的话题之一。无论你是AI新手还是经验丰富的开发者,掌握完整的大模型开发流程都能让你在人工智能浪潮中脱颖而出。本文将通过Awesome-LLM-resourses工具链,为你揭秘构建世界级LLM应用的完整流程。🧑‍🚀 ## 数据准备与清洗:高质量数据是关键 [![大模型资源整合](https://raw.gitcode.com/gh_mir

gitblog_00531的博客 1273

【OpenClaw从入门到精通】第11篇:OpenClaw 2026多模态实战全攻略:OCR/语音/图像自动化(附完整代码+双部署方案)

本文聚焦OpenClaw 2026版核心升级的多模态能力,从底层架构原理到实操落地全流程拆解。先解析“统一指令解析+多工具适配器”的核心设计逻辑,再提供阿里云规模化部署(适合批量任务)与本地汉化版部署(适合隐私数据调试)的详细步骤,含依赖安装、配置验证完整操作;随后落地三大高频实战场景——OCR合同信息结构化提取、会议录音自动转写纪要、电商商品图片智能打标,每个场景均提供可直接运行的完整代码、执行结果演示及流程说明;最后补充多模态任务避坑指南、性能优化技巧与成本控制方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2611

从零开始构建大模型:LLMs-from-scratch(附PDF)

《Build a Large Language Model (From Scratch)》是一本理论与实践相结合的教程,能够帮助读者深刻理解LLM的工作原理,并学会如何构建和优化属于自己的模型,对于希望在AI领域深入发展的学习者来说,是一本不可或缺的参考书籍。

DEVELOPERAA的博客 2947

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

从零开始学大模型之大模型应用

本文介绍了大模型评测和RAG技术。在大模型评测方面,详细阐述了评测的重要性、主流评测数据集(如MMLU、GSM8K等)以及国内外评测榜单(如Open LLM Leaderboard、OpenCompass等)。在RAG技术部分,解释了其基本原理是通过检索外部信息增强生成质量,并给出了搭建简易Tiny-RAG框架的步骤,包括向量化、文档处理、检索和生成等核心模块。文章强调评测对衡量模型性能的关键作用,以及RAG技术在解决大模型幻觉问题、提升内容准确性方面的价值,为AI开发者提供了实用参考。

2401_85592132的博客 1498

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2025火爆全网的LLM大模型教程:从零开始构建大语言模型,git突破18K标星

什么!一本书的Github仓库居然有18.5k的星标!(这含金量不必多说)对GPT大模型感兴趣的有福了!这本书的名字叫也就是虽然这是一本英文书、而且还没正式出版,但是他真的可以帮你使用python从零构建一个自己的大模型!为了加强读者的动手能力,这本书主要使用的是框架,而不是依靠各种库。通过这种方法,加上大量的图表和插图让大家可以彻底了解llm的工作原理。

2401_84208172的博客 1153

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

一步步教你如何构建一个通用的大模型智能体(LLM Agent)

LLM 与 Agent 之间的主要区别在于系统提示(system prompt)。在 LLM 的上下文中,系统提示是一组指令和上下文信息,在模型处理用户查询之前提供给它。Agent 预期的行为可以在系统提示中进行编码,从而定义其 Agentic 行为模式。工具调用(Tool Use)Agent 决定何时将查询传递给合适的工具,或直接依赖自身知识回答。自反思(Reflection)Agent 在回应用户之前,会先检查并修正自己的回答。大多数 LLM 系统都可以加入一个反思步骤。

weixin_59191169的博客 1523
上一篇: 深入了解ChatOllama:在本地运行开源大模型
下一篇: 动手学大模型开发笔记:用dash开发一个大模型RAG知识库
Llama-Turbo
博客等级 码龄4年 9901粉丝 2022原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值