- 博客(179)
- 收藏
- 关注
原创 【Agent智能体项目实战七】ChatPromptTemplate的使用
本文介绍了基于LangChain和通义千问的通用提示词模板设计方法。通过ChatPromptTemplate构建结构化多角色提示模板,包含系统角色设定、历史消息占位符和用户当前提问三大模块,支持多轮对话上下文记忆。文章详细解析了模板调用方式、对话历史格式规范以及流式输出实现,并提炼出适用于各类场景的通用模板。该模板具有高度通用性、易维护性和良好的扩展性,可应用于客服、写作、翻译等多种大模型应用场景,显著提升开发效率。
2026-03-24 21:01:23
384
原创 【Agent智能体项目实战六】FewShot提示词模板
本文介绍了如何使用LangChain的FewShotPromptTemplate实现小样本学习,通过示例让大模型快速理解任务规则。以反义词生成为例,详细演示了构建提示词模板、提供示例数据、调用通义千问模型的全过程。该方法通过"前缀+示例+后缀"的结构,比普通提示词更稳定有效,适用于反义词生成、文本分类、格式转换等任务。核心步骤包括定义示例格式、准备样本数据、构建FewShot模板,最终模型能准确输出"酸"的反义词"甜"。这种方法特别适合需要明确规则
2026-03-23 22:02:59
221
原创 【Agent智能体项目实战五】LangChain 提示词模板(PromptTemplate)极简实战:两种调用方式详解
本文介绍了使用LangChain和通义千问大模型实现提示词模板的两种方法。第一种方法通过PromptTemplate定义参数化模板,使用format手动填充参数后,通过stream实现流式输出。第二种方法采用链式调用prompt | model,通过invoke自动完成参数传递和模型调用。两种方法各有优势:前者灵活可控适合实时交互,后者简洁易维护适合业务场景。核心知识点包括提示词参数化、占位符使用、流式输出和链式调用。代码示例展示了如何实现宝宝起名功能,输出如"王雨桐"、"赵思
2026-03-23 21:37:39
260
原创 【Agent智能体项目实战五】LangChain访问阿里云嵌入模型
本文介绍了如何使用LangChain社区中的DashScopeEmbeddings生成文本向量嵌入。主要内容包括:安装依赖(langchain_community)、设置阿里云DashScope API Key、初始化模型(text-embedding-v1/v2)、单文本(embed_query)和批量文档(embed_documents)的向量化方法。代码示例展示了1536维向量的生成过程,并总结了不同方法的使用场景。常见问题解答了API设置和模型选择等注意事项。该技术可应用于RAG、语义检索、向量数据
2026-03-22 23:09:45
267
原创 【Agent智能体项目实战四】LangChain调用通义千问聊天模型教程
本文介绍了如何使用LangChain和ChatTongyi实现通义千问大模型的多轮对话与流式输出。主要内容包括:1)通过ChatTongyi接入阿里云通义千问,支持系统提示、历史对话和流式响应;2)详细的环境配置和代码实现,包含API密钥设置、模型初始化、消息构造和流式输出处理;3)实际运行示例展示了一个Python专家的对话场景;4)常见问题解答和扩展用法,如单轮对话和非流式调用。该方案可快速搭建具备打字机效果的大模型对话系统,适用于各种AI交互场景。
2026-03-22 22:44:46
284
原创 【Agent智能体项目实战三】LangChain调用通义千问保姆级教程
本文介绍如何使用LangChain_Community快速接入阿里云通义千问大模型。首先需在阿里云DashScope平台获取API-KEY并安装依赖库。核心代码仅需5步:导入模块、设置API密钥、初始化模型(支持qwen-turbo/qwen-plus等)、调用invoke方法提问、输出结果。文章提供了完整可运行代码示例和常见问题解决方案,还展示了批量提问和流式输出等进阶用法。通过这个教程,开发者可以快速实现Python调用通义千问大模型的功能。
2026-03-22 22:22:08
87
原创 【Agent智能体项目实战二】通义千问流式输出:实现像 ChatGPT 一样逐字打印效果
本文介绍了如何使用OpenAI兼容模式对接阿里云通义千问模型实现流式输出。首先需要安装openai库并配置API Key和base_url。核心代码通过设置stream=True参数开启流式传输,逐字接收模型返回的内容并实时显示。文章包含完整的Python实现代码、调用流程图、核心参数说明以及运行效果展示。特别提醒API Key的安全使用方法,建议通过环境变量配置。该技术适用于聊天机器人、AI助手等需要实时交互输出的场景,通义千问完全兼容OpenAI格式,无需修改代码即可实现流式输出效果。
2026-03-21 23:52:17
501
原创 【Agent智能体项目实战一】阿里云通义千问兼容 OpenAI 接口实现 AI 对话
本文介绍了如何使用OpenAI兼容接口调用阿里云通义千问大模型。主要内容包括:1)安装openai库;2)配置客户端参数(API Key和接口地址);3)构造对话请求,包含系统角色设定和用户提问;4)获取并打印AI回复。文章强调API Key的安全性,建议使用环境变量存储,并说明该方案适合快速开发AI工具,兼容现有OpenAI项目。示例展示了Python编程助手的对话效果,代码简洁易用。
2026-03-21 23:34:17
284
原创 OpenCode 入门教程:介绍 · 安装 · 配置第三方 API (如 Claude)
OpenCode 是一款开源 AI 编程代理工具,支持多模型提供商自由切换。它可通过 CLI 或 IDE 使用,配置灵活,支持 Claude、GPT、Gemini 等多种模型。安装方式多样,包括一键脚本、npm 等。通过 JSON 配置文件可轻松添加第三方 API,如 Claude 只需配置 baseURL 和 API Key 即可启用。OpenCode 开源透明,没有数据锁定,适合开发者灵活集成不同 AI 服务。
2026-01-16 22:21:46
6218
原创 使用 IntersectionObserver 实现懒加载提升网页性能的高效方案
本文聚焦于使用IntersectionObserver实现 JavaScript 懒加载技术,旨在提升网页性能。文章先阐述懒加载在优化网页加载速度、减少流量消耗、提升用户体验方面的重要性;接着介绍IntersectionObserver API 的工作原理与基本使用步骤;随后通过图片、视频等资源的具体案例,展示其实现懒加载的方法;最后强调该技术在兼容性、性能优化、内存管理及复杂场景处理等方面的注意事项。通过运用IntersectionObserver,开发者能更高效地控制资源加载时机,助力网页应用实现更高效
2025-04-26 16:04:40
1049
原创 Curl 使用教程:从基础到进阶
curl是一款功能丰富、灵活且强大的命令行工具,通过掌握其各种参数和用法,可以在网络开发、测试以及日常的网络操作中发挥重要作用。无论是简单的网页获取,还是复杂的文件传输和 API 交互,curl都能提供高效便捷的解决方案。不断实践和探索curl的更多功能,将有助于您更好地理解和处理网络请求与响应,提升您在网络技术领域的技能水平。希望本教程能够为您提供一个全面的curl使用指南,让您能够快速上手并熟练运用这个强大的工具。如果您有任何进一步的问题或需要更多的示例,欢迎查阅curl。
2024-12-25 09:28:57
2091
原创 利用 Vue 组合式 API 与 requestAnimationFrame 优化大量元素渲染
本文介绍了在Vue项目中利用``语法糖与`requestAnimationFrame`优化大量元素渲染的方法。先是深入解析了自定义`useDefer`组合式函数的各部分逻辑,包括变量定义、动画帧更新、组件卸载清理及元素渲染控制等,接着展示其在组件中的使用方式,最后总结该方法有效解决性能问题,并提出进一步优化思路,旨在为Vue开发者处理此类问题提供思路与方案。
2024-11-26 21:16:19
1472
2
原创 JavaScript 跨标签页通讯全解析
在 JavaScript 跨标签页通讯中,不同的方法适用于不同的场景。对于同源简单通讯,和可以快速满足需求;当涉及跨域时,是可靠的选择;而对于高性能、复杂数据处理和频繁交互的场景,则更具优势。在实际应用中,需要根据项目的具体需求、数据量、通讯频率以及是否跨域等因素综合考虑选择合适的跨标签页通讯方式。同时,无论使用哪种方法,都要注重安全性,对消息来源进行严格验证,防止恶意数据的注入和滥用,以确保用户数据安全和应用程序的稳定运行。
2024-11-26 10:48:39
1263
原创 深入理解 JavaScript 中的 AbortController
是 JavaScript 中的一个内置对象,它提供了一种简洁而有效的方式来取消一个或多个异步操作。实例本身和与之关联的。实例拥有一个abort方法,当调用这个方法时,会触发与该控制器关联的所有异步操作的取消。而则是一个特殊的对象,它可以被传递给各种异步操作函数,用于监听取消信号。例如,在fetchAPI 中,我们可以将传递给fetch请求,以便在需要时能够取消该请求。
2024-11-26 10:36:23
1981
转载 this详解
一、方法调用模式当函数被保存为一个对象的属性时,它就可称为这个对象的方法。当一个方法被调用时,this被绑定到这个对象上。如果调用表达式包含一个提取属性的动作(. 或 []),那么它被称为方法调用。例如:var name = "window";var obj = { name: "obj", getName: function(){ alert(this.name); }}obj.getName(); //"obj" getName函数作为对象obj的方法调用,所以
2022-03-13 18:55:48
576
原创 watch对数据的监测
computed: { // 使用计算属性将对象转换为单个变量(数据检测方式二) username() { return this.obj.username; }},watch: { // 对单个属性进行检测 'obj.username': { handler(newName, oldName) { console.log(newName, oldName); }, deep: true }, // 方式二:使用计算属性返回的参.
2022-03-11 19:10:20
428
原创 组件之间传值使用方法
props/$emit父组件传子组件子组件export default { name: "Component2", props: { username: { type: String, default: '' } },}父组件<component2 :username="username"></component2>子组件传父组件子组件methods: { update() { t
2022-03-11 18:47:29
338
原创 new操作符具体做了什么
1.创建了一个空的对象function Foo() {}console.log(new Foo())2.将空对象的原型,指向于构造函数的原型function Foo() {}console.log(Foo.prototype == new Foo().__proto__)3.将空对象作为构造函数的上下文(改变this指向)function Foo() { console.log(this) this.name = "张三";}cons.
2022-03-03 20:24:35
192
原创 JavaScript深浅拷贝
对象类型在赋值的过程中其实是复制了地址,从而会导致改变了一方其他也都被改变的情况。通常在开发中我们不希望出现这样的问题,我们可以使用浅拷贝来解决这个情况。let a = { age: 1}let b = aa.age = 2console.log(b.age) // 2浅拷贝首先可以通过Object.assign来解决这个问题,很多人认为这个函数是用来深拷贝的。其实并不是,Object.assign只会拷贝所有的属性值到新的对象中,如果属性值是对象的话,拷贝的是地址,所以并不...
2022-03-02 11:36:55
286
原创 原生jsajax请求有几个步骤
创建XMLHttpRequest对象, 也就是创建一个异步调用对象. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息. 设置响应HTTP请求状态变化的函数. 发送HTTP请求. 获取异步调用返回的数据. 使用JavaScript和DOM实现局部刷新....
2022-03-01 19:53:41
524
原创 JavaScript判断变量是不是数组
let a = [1, 2, 3];// 方法一:Array.isArray()console.log(Array.isArray(a));// 方法二:Array.prototype.isPrototypeOf()console.log(Array.prototype.isPrototypeOf(a));// 方法三:constructorconsole.log(a.constructor.toString().indexOf('Array'));// 方法四:Object.pro.
2022-03-01 15:08:12
474
原创 包装对象的使用
对象是 JavaScript 语言最主要的数据类型,三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”(wrapper)。所谓“包装对象”,指的是与数值、字符串、布尔值分别相对应的Number、String、Boolean三个原生对象。这三个原生对象可以把原始类型的值变成(包装成)对象。function mySplit(str, method, arg) { let obj = new String(str); return o
2022-02-28 17:17:37
275
原创 this的指向问题
// 直接调用function fn1() { console.log(this);}fn1(); // 指向的是window// 使用对象调用let fn2 = { name: '张三', getName: function () { console.log(this.name); }}fn2.getName();// 使用原型调用function fn3(name) { this.name = name;}fn3..
2022-02-28 17:15:02
169
原创 JavaScript常用数组
let list = [10, 20, 30, 40, 50, 40, 30, 20, 10, 11];// 又返回值let newList1 = list.map((item) => { if (item > 10) return item; return "";})console.log(newList1); // ['', 20, 30, 40, 50, 40, 30, 20, '', 11]// 无返回值(所循环到的元素、下标、遍历的数组)list.for.
2022-02-27 23:05:14
518
原创 v-model原理
<input placeholder="请输入名字" id="username">显示值:<p id="uName"></p>let obj = {};Object.defineProperty(obj, 'username', { get() { console.log("取值") }, set(v) { console.log("设置值") document.querySelector(.
2022-02-17 22:03:56
265
原创 数组与对象的解构
数组// ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构let [a, b, c] = [1, 2, 3]; // a:1 b:2 c:3// 这种写法属于'模式匹配',只要等号两边的模式相同,左边的变量就会被赋予对应的值let [aa, [[bb], cc]] = [1, [[2], 3]]; // aa:1 bb:2 cc:3let [, , z] = [1, 2, 3]; // z:3let [x, ...y] = [1, 2, 3, 4]; // x=1
2022-02-16 22:23:39
1141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅