当前位置: 首页 > web >正文

通义千问-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,就可以做简单的界面交互测试。
成效:
如下图所示,这句话就翻译成了印度语。
在这里插入图片描述
这个是翻译成德语
在这里插入图片描述

结论

综上,做了一下最简单的应用

http://www.xdnf.cn/news/6103.html

相关文章:

  • ChromeDriver进程泄漏问题分析与最佳实践解决方案
  • 排序算法详解
  • Electron入门指南:用前端技术打造桌面应用
  • Socket API 核心函数详解
  • 一文了解 HTTP Content-Type:从基础到实战
  • 第六天——贪心算法——字符串分隔
  • 【C++】模板(初阶)
  • 从lightrag的prompt到基于openai Structured Outputs 的优化实现思路
  • 虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析
  • C语言学习之文件操作
  • HTTP / HTTPS 协议
  • Nginx 动静分离在 ZKmall 开源商城静态资源管理中的深度优化
  • LVDS系列12:Xilinx Ultrascale系可编程输入延迟(二)
  • ajax提交form表单数据举例
  • ARM杂谈——临界段保护恢复的中断状态可靠吗
  • Xcode报错:“Set `maskView` to `nil` before adding it as a subview of ZFMaskView
  • 计算机图形学之几何(Geometry)
  • Maven 下载安装与配置教程
  • 查看字节真实二进制形式示例解析1
  • NAT/代理服务器/内网穿透
  • 容器编排的革命:Kubernetes如何引领IT的云原生时代
  • 高并发内存池(四):Page Cache结构设计
  • How Sam‘s Club nudge customers into buying more
  • PTA编程题: 异常处理(python)
  • AI-02a5a5.神经网络-与学习相关的技巧-权重初始值
  • 联邦+反射器 基础实验
  • TTL、RS-232、RS-485电平转换详解
  • 系统漏洞扫描服务:维护网络安全的关键与服务原理?
  • 【Linux】Linux 的管道与重定向的理解
  • Python中列表(list)知识详解(2)和注意事项以及应用示例