通义千问-langchain使用构建(一)
目录
- 序言
- 通义千问
- 1获取通义千问api_key
- 2Conda构建下本地环境
- 3 构建一下多轮对话
- LangChain
- 1使用Langchain调用通义千问接口实现翻译
- 结论
序言
25年5月,现在基本每个大厂都有涉及大模型(Large Language Model),然后在大模型基础上构建应用框架。
参考链接1:https://baijiahao.baidu.com/s?id=1823187505923920373
这个文章里提到24年全球已经有1300多个大模型,挺夸张的。
模型一多,自然有大模型开发应用框架的出现。每个厂商自身也会推出应用框架,但是有第三方整合使用,一个接口,总比好多个不同接口来的好。
25年LLM应用框架介绍:https://blog.csdn.net/m0_63171455/article/details/145929392
langchain知识库应用框架介绍:
https://blog.csdn.net/xiangxueerfei/article/details/141141146
所以,这个文章,用一下通义千问应用框架,基于通义千问接口构建一个langchain试用下。
通义千问
阿里的大模型名字。
1获取通义千问api_key
参考文档链接:https://help.aliyun.com/zh/model-studio/first-api-call-to-qwen?spm=a2c4g.11186623.0.i17
最终就是把这个界面的key值生成,后续复制出来使用。
2Conda构建下本地环境
如下图内容。创建虚拟环境,安装下包。dashscope是阿里自己的应用开发包,langchain是第三方的。
然后建个文件,保存下api_key,或者环境变量设置也行。
3 构建一下多轮对话
这个代码就是调用下【通义千问】接口,然后简单的多轮对话
代码:
import os
from dashscope import Generation
import dashscope
import key_config
def get_response(messages):response = Generation.call(# 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx",api_key=key_config.tongyi_key,# 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/modelsmodel="qwen-plus",messages=messages,result_format="message",)return response# 初始化一个 messages 数组
messages = [{"role": "system","content": """你是一名阿里云百炼手机商店的店员,你负责给用户推荐手机。手机有两个参数:屏幕尺寸(包括6.1英寸、6.5英寸、6.7英寸)、分辨率(包括2K、4K)。你一次只能向用户提问一个参数。如果用户提供的信息不全,你需要反问他,让他提供没有提供的参数。如果参数收集完成,你要说:我已了解您的购买意向,请稍等。""",}
]assistant_output = "欢迎光临阿里云百炼手机商店,您需要购买什么尺寸的手机呢?"
print(f"模型输出:{assistant_output}\n")
while "我已了解您的购买意向" not in assistant_output:user_input = input("请输入:")# 将用户问题信息添加到messages列表中messages.append({"role": "user", "content": user_input})assistant_output = get_response(messages).output.choices[0].message.content# 将大模型的回复信息添加到messages列表中messages.append({"role": "assistant", "content": assistant_output})print(f"模型输出:{assistant_output}")print("\n")
参考链接:https://help.aliyun.com/zh/model-studio/multi-round-conversation?spm=a2c4g.11186623.0.0.5c55623cU9ivA4
成效:
LangChain
一个大模型开发框架,github星多,用的人多,25年尚且流行。
主要功能就是把本地模型或者外部模型链接,再做一下嵌套应用。主要的好处,就是定制化,比如说搞好了一个特定的翻译应用,或者说园林行业的专家模型,原本用的openai,然后用着用着,太贵了,替换成通义千问,这时候,就不用局限于openai的开发框架,少量迁移工作就可以换成其他厂商的。
#英文官方文档
https://python.langchain.com/docs/introduction/
#中文非官方文档
https://www.langchain.com.cn/docs/introduction/
1使用Langchain调用通义千问接口实现翻译
代码
from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_qianwen import ChatQwen_v1
from langserve import add_routes
from openai import OpenAI
from langchain_community.llms.tongyi import Tongyi
from langchain.prompts.prompt import PromptTemplate
# 设置 API Key(推荐使用环境变量或文件)
import os
import key_config
os.environ['DASHSCOPE_API_KEY'] = key_config.tongyi_key# 1创建临时对话提示词
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([('system', system_template),('user','{text}')
])# 2. 创建模型
model = Tongyi(model_name='qwen-max',model_kwargs={'temperature': 0.01})# 3.字符串解析
parser = StrOutputParser()# 4. Create chain
chain = prompt_template | model | parser# 4. App definition
app = FastAPI(title="LangChain Server",version="1.0",description="A simple API server using LangChain's Runnable interfaces",
)# 5. Adding chain route
add_routes(app,chain,path="/chain",
)if __name__ == "__main__":import uvicornuvicorn.run(app, host="localhost", port=8910)
这个代码构建完,对应路径加playgroud,就可以做简单的界面交互测试。
成效:
如下图所示,这句话就翻译成了印度语。
这个是翻译成德语
结论
综上,做了一下最简单的应用
相关文章:
通义千问-langchain使用构建(一)
目录 序言通义千问1获取通义千问api_key2Conda构建下本地环境3 构建一下多轮对话 LangChain1使用Langchain调用通义千问接口实现翻译 结论 序言 25年5月,现在基本每个大厂都有涉及大模型(Large Language Model),然后在大模型基础上构建应用框架。 参考…...
六西格玛觉醒:一场数据思维的启蒙运动
当生产线上的不良品率曲线第一次在我眼前具象化为统计波动图时,我意识到自己正站在新旧认知的断层带上。从对着MINITAB界面手足无措的菜鸟,到能独立完成过程能力分析的绿带学员,这段学习旅程不仅重塑了我的问题解决逻辑,更让我…...
BitMart合约交易体验 BitMart滑点全赔的底层逻辑
美国新泽西州泽西市,2025年5月13日 – BitMart,全球领先的数字资产交易平台,推出了其开创性的滑点保护计划,旨在解决加密市场中最具挑战性且常常被忽视的风险之一:滑点。该计划为交易者提供了在 USDT 保证金永续合约交…...
HCIP(BFD)
一、前言 随着网络应用的广泛部署,网络发生故障极大可能导致业务异常。为了减小链路、设备故障对业 务的影响,提高网络的可靠性,网络设备需要尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务正常进行。BFD(Bidirectional Forwarding Detection,双向转发检测)提供…...
json-server的用法-基于 RESTful API 的本地 mock 服务
json-server 是一个非常方便的工具,用于快速搭建基于 RESTful API 的本地 mock 服务,特别适合前端开发阶段模拟后端数据接口。 🧩 一、安装 npm install -g json-server🚀 二、快速启动 创建一个 db.json 文件(模拟数…...
化工单元操作试验装置系列产品JG-SX211计算机过程控制板框过滤操作实训装置
化工单元操作试验装置系列产品JG-SX211计算机过程控制板框过滤操作实训装置 一、装置功能 板框过滤岗位技能:板框过滤机的构造和操作方法;板框压滤机的操作(装合、过滤、洗涤、卸渣、整理);洗涤速率与最终过滤速率的关…...
Linux 内核 IPv4 协议栈中的协议注册机制解析
1. 引言 在 Linux 内核的 IPv4 协议栈中,inetsw 是一个核心数据结构,负责管理不同套接字类型(如 SOCK_STREAM、SOCK_DGRAM)的协议实现。本文结合代码分析,深入探讨其设计原理、动态协议注册机制及并发安全实现。 2. inetsw 的结构与作用 2.1 定义与初始化 static struc…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-C. 常用SQL脚本模板
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 附录C. 常用SQL脚本模板速查表一、数据清洗与预处理模板二、数据聚合与分析模板三、窗口函数应用模板四、性能优化与监控模板五、数据备份与恢复模板六、权限管理与安全模板…...
Linux操作系统实战:中断源码的性能分析(转)
Linux中断是指在Linux操作系统中,当硬件设备或软件触发某个事件时,CPU会中断正在执行的任务,并立即处理这个事件。它是实现实时响应和处理外部事件的重要机制,Linux中断可以分为两种类型:硬件中断和软件中断࿰…...
Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南
本文同步发布在个人博客: Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南 - 萑澈的寒舍Conda 是一个开源的跨平台包管理与环境管理工具,广泛应用于数据科学、机器学习及 Python 开发领域。它不仅能帮助用…...
用HBuilder运行小程序到微信开发者工具
首先在HBuilder里配置微信开发者工具安装路径 “运行”--“运行到小程序模拟器”--“运行设置”--“微信开发者工具路径”...
基于网关实现不同网段S7-1200 CPU的通信方法
在工业自动化场景中,不同网段的S7-1200 PLC之间需要进行数据交换时,通常需要借助网关或路由设备实现跨网段通信。以下是几种常见的实现方法及详细配置步骤。 一、通信需求分析 当两个或多个S7-1200 PLC位于不同子网(如192.168.1.0/24和192.1…...
微信小程序学习之轮播图swiper
轮播图是小程序的重要组件,我们还是好好学滴。 1、上代码,直接布局一个轮播图组件(index.wxml): <swiper class"swiper" indicator-active-color"#fa2c19" indicator-color"#fff" duration"{{durati…...
零基础用 Hexo + Matery 搭建博客|Github Pages 免费部署教程
文章目录 一、Hexo1.1 依赖1.2 快速使用1.3 目录说明1.4 命令说明1.4.1 常规命令1.4.2 全局选项 二、主题安装2.1 安装 Matery 主题2.1.1 下载2.1.2 配置2.1.2.1 基础配置2.1.2.2 新建页面类型2.1.2.3 其他配置 2.2 其他主题推荐 三、部署3.1 部署到 Github Pages 四、总结 一、…...
Large-Scale Language Models: In-Depth Principles and Pioneering Innovations
大规模语言模型(Large-Scale Language Models, LLMs)是人工智能领域的璀璨明珠,深刻重塑了自然语言处理(NLP)并推动多模态应用的蓬勃发展。从BERT的语义洞察到GPT系列的生成奇迹,再到Grok、LLaMA等模型的跨界创新,LLMs在智能对话、代码生成、科学探索等领域展现出近乎人…...
微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)
一、系统介绍 本智能商城系统是基于当今主流技术栈开发的一款多端商城解决方案,主要包括微信小程序前端、SpringBoot 后端服务以及 Vue 管理后台三大部分。系统融合了线上商城的核心功能,支持商品浏览、下单、支付、订单管理等操作,适用于中小…...
命令行快速上传文件到SFTP服务器(附参考示例)
一、SFTP基础命令格式 更新参数后的标准命令格式为: sftp -P [端口号] [用户名][服务器IP]:[远程路径] <<< $put [本地文件路径]二、新参数实例解析 使用新连接参数的完整命令示例: sftp -P 30033 test_jigou_sftp121.199.64.216:/download…...
【Linux】第十六章 分析和存储日志
1. RHEL 日志文件保存在哪个目录中? 一般存储在 /var/log 目录中。 2. 什么是syslog消息和非syslog消息? syslog消息是一种标准的日志记录协议和格式,用于系统和应用程序记录日志信息。它规定了日志消息的结构和内容,包括消息的…...
vue2+ThinkPHP5实现简单大文件切片上传
使用 Vue 2 和 ThinkPHP 5 实现大文件切片上传功能 文章目录 一、前端(Vue 2)安装依赖文件上传并切片全部代码二、后端(ThinkPHP 5)完整代码一、前端(Vue 2) 安装依赖 安装spark-md5依赖 用于生成文件哈希,以便验证文件的完整性。 npm install spark-md5文件上传并切…...
phpstudy的Apache添加AddType application/x-httpd-php .php .php5配置无效的处理方式
前言 最近在学习安全竞赛ctf相关的内容,使用phpstudy作为服务端,研究图片上传相关漏洞的靶场upload-labs。其中遇到后缀名过滤,会过滤后缀名php。按照网上的处理方式,只需要在Apache服务器的配置文件中增加“AddType application…...
2025年Flutter项目管理技能要求
在2025年,随着Flutter技术的广泛应用和项目复杂度的提升,项目管理的重要性愈发凸显。Flutter项目管理不仅需要技术能力,还需要良好的沟通、协调、规划和执行能力。本文将详细探讨2025年Flutter项目管理应具备的技能要求,帮助项目管…...
Step1
项目 SchedulerSim 已搭建完成 ✅ ⸻ ✅ 你现在拥有的: • 🔧 两种调度器(Round Robin SJF) • 📦 模拟进程类 Process • 🧱 清晰结构:OOP 风格 便于扩展 • ✍️ 主函数已演示调度器运行效…...
MCP(一)——QuickStart
目录 1. MCP简介2. MCP的优势3. MCP核心4. QuickStart For Server Developers(仅具参考)4.1 MCP核心概念4.2 构建MCP服务器的代码4.2.1 设置MCP服务器实例4.2.2 辅助函数4.2.3 实现工具执行4.2.4 在Cherry-Studio中添加MCP服务器4.2.5 演示4.2.5.1 测试工具get_alerts4.2.5.2 测…...
NLP的基本流程概述
自然语言处理(Natural Language Processing, NLP)是计算机科学与人工智能领域中的一个重要分支,旨在使计算机能够理解、分析、生成和处理人类语言。NLP的基本流程通常包括以下几个关键步骤: 1. 文本预处理 (Text Preprocessing) …...
【Java学习笔记】==运算符
运算符 是一个比较运算符 既可以判断基本类型,又可以判断引用类型 如果判断基本类型,判断的是值是否相等,示例: int i 10; double d 10.0(底层会发生自动类型转换) 如果判断引用类型,判断的是地址是否相…...
移动网页调试工具实战:从 Chrome 到 WebDebugX 的效率演进
前端开发的日常,说白了就是构建、预览、调试的不断循环。如果是桌面浏览器,调试体验已经极致成熟;但一旦牵涉到移动端,尤其是 WebView 环境,一切都变得复杂。 过去几年里,我陆续试用了多个调试工具&#x…...
Vue 图片预览功能(含缩略图)
众所周知,常见的组件库如Element、Ant Design,自带的图片预览功能都没有缩略图,所以 需要单独封装一个图片预览的服务。 第三方库:v-viewer 安装: npm install v-viewer viewerjs 若使用报错,可安装指定…...
RK3588 串行解串板,支持8路GMSL相机
RK3588 支持的 GMSL 相机接入数量取决于所使用的解串板型号及配置方案: xcDeserializer3.0 解串板 可接入最多 8 路 2M GMSL2 相机1。 xcDeserializer4.0 解串板 支持 4 路 2M GMSL2 相机1。 边缘计算盒解决方案 部分商用方案可实现 4 或 8…...
数据库字段唯一性修复指南:从设计缺陷到规范实现
数据库字段唯一性修复指南:从设计缺陷到规范实现 一、问题背景 表结构设计缺陷: sys_user 表未对 dingtalk_user_id(钉钉用户ID)字段设置唯一性约束,导致数据重复,引发以下问题: 系统稳定性风…...
深度学习Dropout实现
深度学习中的 Dropout 技术在代码层面上的实现通常非常直接。其核心思想是在训练过程中,对于网络中的每个神经元(或者更精确地说,是每个神经元的输出),以一定的概率 p 随机将其输出置为 0。在反向传播时,这…...
IIS服务器URL重写配置完整教程
1.下载URL Rewrite Module 2.1 https://www.iis.net/downloads/microsoft/url-rewrite https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi 2.安装...
前后端分离博客 Weblog 项目实战
前后端分离博客 Weblog 项目实战:专栏介绍 - 犬小哈专栏 原文作者 http://116.62.199.48/ 功能模块 技术栈 必备环境 后端环境: JDK 1.8 版本(此版本是目前企业中使用最广泛的);MySQL 5.7 版本 (或者 8.x 版本都可以&#…...
stm32 ADC单通道转换
stm32c8t6仅有12位分辨率 1、单次转换 非扫描 1、初始化 void Ad_Init() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//配置ADCCLK时钟分频,ADC的输入时钟不得超过14MHzRCC_ADCCLKConfig(RCC_PCLK2_Div6);G…...
万文c++继承
1、继承的概念与定义 1.1继承的概念 继承:是c代码复用的手段,允许在原有的基础上扩展,在此之前都是函数层次的复用,继承是类设计层次的复用。 下面有两个类Student和Teacher都有姓名/地址/电话/年龄等成员变量。都有identity身…...
记录一次git提交失败解决方案
问题显示: Push rejected: Push to origin/master was rejected 解决步骤: 拉取远程代码并合并 先同步远程仓库的更新到本地,允许合并不相关历史记录: git pull origin master --allow-unrelated-histories 此操作会触发合并冲突解决流程…...
uni-app vue3版本打包h5后 页面跳转报错(uni[e] is not a function)
先看问题 解决方案 在HBuilderX项目中,若需在Web配置中显式关闭摇树优化(Tree Shaking),可以通过以下步骤实现:首先,在配置中打开摇树优化,然后再将其关闭。这样操作后,配置文件中会…...
数字住建:助推智慧工地创新发展
近年来,国家和地方政府陆续出台了一系列政策措施,推动建筑业的智能化高质量发展。通过明确智慧工地的发展方向和目标定位,鼓励建筑业企业采用先进的信息化技术和管理模式,开展智能建造试点城市、资金扶持、税收优惠、智慧工地建设…...
libmemcached库api接口讲解二
我们来学一下怎么存数据 📘 libmemcached 数据写入函数详解(set / add / replace) ✅ 一、三个函数的作用与区别 函数作用key 存在时key 不存在时常见用途memcached_set()写入(新增或覆盖)✅ 覆盖✅ 创建默认推荐memc…...
【数据分析】从TCGA下载所有癌症的多组学数据
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包组学数据类型下载函数运行并行运行使用建议总结系统信息介绍 TCGA(The Cancer Genome Atlas)是一个庞大的癌症基因组数据库,包含多种癌症类型的多组学数据,如基因表达、…...
K8S redis 部署
在Kubernetes 1.26.14中部署Redis单实例/集群的步骤如下(结合NFS持久化存储与认证配置): 一、部署Redis单实例(StatefulSet模式) 1. 创建配置文件 redis-statefulset.yaml # ConfigMap存储Redis配置 apiVersion: v1 …...
Android学习总结之kotlin篇(二)
扩展函数转成字节码的原理(源码级别) Kotlin 扩展函数在编译时会被转换为静态方法,这一过程涉及到以下几个关键步骤: 首先,Kotlin 编译器会为包含扩展函数的包生成一个特定的类。这个类的命名通常是基于包名和文件名的…...
QMK RGB矩阵灯效配置详解:从理论到实践(实操部分)
QMK RGB矩阵灯效配置详解:从理论到实践 引言 RGB灯效是现代机械键盘中一个非常吸引人的特性,通过QMK固件,我们可以实现丰富多彩的灯光效果。本文将详细讲解如何在QMK中配置RGB矩阵灯效,从基础理论到实际实现,帮助键盘爱好者打造专属的RGB键盘。无论你是刚开始接触QMK,还…...
知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑
1. 搜索引擎的进化论 从雅虎目录式搜索到Google的PageRank算法,搜索引擎经历了三次技术跃迁。而AI搜索引擎正在掀起第四次革命:在电商场景中,传统的「关键词匹配」已无法满足个性化购物需求,MOE搜索等新一代架构开始融合知识图谱…...
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法 现在我们的核心问题是有一些同学会知道要才能强化学习。为什么才能强化学习?是实现AGI。例如从这个其实你从第一阶段开始以后,就是chatbot,这…...
嵌入式学习笔记 - SystemCoreClock/1000000
SystemClock 顾名思义就是系统时钟,位于时钟树如下中间位置,是PLL倍频后的部分,它不同于HCLK(SystemCoreClock), SystemCoreClock为系统内核时钟,也就是HCLK始终,也就是总线时钟,就是芯片内核运行的最终时…...
密西根大学新作——LightEMMA:自动驾驶中轻量级端到端多模态模型
导读 目前将自动驾驶与视觉语言模型(VLMs)结合的研究越来越火热,VLMs已经证明了其对自动驾驶的重要作用。本文引入了一种用于自动驾驶的轻量级端到端多模态模型LightEMMA,它能够集成和评估当前的商业和开源模型,以研究…...
MobiPDF:安卓设备上的专业PDF阅读与编辑工具
MobiPDF是一款专为安卓设备设计的PDF阅读和编辑工具,提供了丰富的功能,帮助用户在移动设备上轻松打开、阅读、批注和编辑PDF文件。无论是学生、专业人士还是普通用户,MobiPDF都能满足他们在移动设备上处理PDF文件的需求,提升工作效…...
印度尼西亚数据源对接技术指南
一、数据源全景概述 印度尼西亚作为东南亚最大经济体,其数据生态覆盖金融、产业、人口等多个维度。StockTV提供全链路印尼数据解决方案,涵盖以下核心领域: 数据类型覆盖范围更新频率典型应用场景金融市场数据IDX交易所股票/债券/衍生品实时…...
Apache Pulsar 消息、流、存储的融合
Apache Pulsar 消息、流、存储的融合 消息队列在大层面有两种不同类型的应用,一种是在线系统的message queue,一种是流计算,data pipeline的streaming高throughout,一致性较低,延迟较差的过程。 存算分离 扩容和缩容快…...
从零实现一个高并发内存池 - 2
上一篇https://blog.csdn.net/Small_entreprene/article/details/147904650?fromshareblogdetail&sharetypeblogdetail&sharerId147904650&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link 高并发内存池 - thread cache 一、基本结构与原…...