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

LangChain - 如何使用阿里云百炼平台的Qwen-plus模型构建一个桌面文件查询AI助手 - 超详细

该文章,将使用阿里云百炼平台的Qwen-plus模型作为llm模型。

所以在进行后面代码编写之前要申请百炼大模型平台的api-key。

获取参考:如何获取API Key_大模型服务平台百炼(Model Studio)-阿里云帮助中心

获取key后,我们可以编写一个.env文件来储存

#阿里云百炼平台
DASHSCOPE_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxx"
DASHSCOPE_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"

然后我们就可以开始编写我们的代码了。

首先需要对第三方库的引入:

import dotenv
import os
from langchain_core.tools import tool
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

然后我们需要通过dotenv和os库来获取我们配置在env的密钥和url:

dotenv.load_dotenv()
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
DASHSCOPE_BASE_URL = os.getenv("DASHSCOPE_BASE_URL")# 禁用 LangSmith
os.environ["LANGCHAIN_TRACING_V2"] = "false"
os.environ["LANGCHAIN_API_KEY"] = ""

- 加载 .env 文件中的环境变量
- 获取阿里百炼的 API 配置
- 禁用 LangSmith 追踪 (避免因为没有配置LangSmith密钥的 403 错误,防止影响观感)

然后进行工具函数定义:


@tool
def search_Desktop_app() -> str:"""获取桌面文件和文件夹名称信息"""try:# 使用用户指定的桌面路径desktop_path = r"D:\System\Desktop"# 检查桌面路径是否存在if not os.path.exists(desktop_path):return f"桌面路径不存在:{desktop_path}"# 获取桌面上的文件和文件夹items = []for item in os.listdir(desktop_path):item_path = os.path.join(desktop_path, item)if os.path.isfile(item_path):items.append(f"📄 {item}")elif os.path.isdir(item_path):items.append(f"📁 {item}")else:items.append(f"❓ {item}")# 返回格式化的结果if not items:return f"桌面 {desktop_path} 是空的"result = f"桌面路径:{desktop_path}\n文件列表:\n" + "\n".join(items)result += f"\n总计:{len(items)} 个项目"return resultexcept Exception as e:return f"获取桌面文件时出错:{str(e)}"tools = [search_Desktop_app]

由于我的桌面在D盘,你们使用的时候要切换为自己的桌面路径。

tools = [search_Desktop_app]

将我们编写的方法储存在tools数组中,一会儿用于配置到agent中。

AI-agent配置:


# 构建LLM
llm = ChatOpenAI(openai_api_key=DASHSCOPE_API_KEY,openai_api_base=DASHSCOPE_BASE_URL,model="qwen-plus",temperature=0.1,max_tokens=4096,
)prompt = ChatPromptTemplate.from_messages([("system","你是一个AI助手。如果用户提到桌面文件或文件夹,你可以使用工具获取相关信息。请直接给出简洁的回答,不要显示思考过程。",),("human", "{input}"),
])

现在我们就可以编写主要逻辑-main函数:

def main():print("应用开始执行。\n")while True:user_question = input("请输入您的问题:")if user_question.lower() in ['quit', 'exit']:print("👋 再见!")breaktry:# 绑定工具并调用chain = prompt | llm.bind_tools(tools)response = chain.invoke({"input": user_question})# 处理工具调用if hasattr(response, 'tool_calls') and response.tool_calls:# 执行工具调用tool_call = response.tool_calls[0]if tool_call["name"] == "search_Desktop_app":tool_result = search_Desktop_app(tool_call["args"])# 再次调用获取最终回答final_response = chain.invoke({"input": f"{user_question}。根据工具返回:{tool_result},请直接回答。"})print(final_response.content)else:print(f"未知工具调用:{tool_call['name']}")else:# 直接打印普通回答print(response.content)except Exception as e:print(f"处理问题时出错:{str(e)}")if __name__ == "__main__":main()debug = True

- 智能工具调用 :
- 如果用户询问桌面相关问题,AI 会自动调用 search_Desktop_app 工具
- 获取桌面信息后, 再次调用 AI 生成基于实际数据的回答
- 异常处理 :捕获并显示运行时的错误信息

最后我们就可以启动我们的文件:

python 文件名.py

我们的终端这时会出现:

输入问题来观察是否可以正确回复:

可以看见可以正确的回复!希望可以帮到你们。希望可以得到你们的收藏。谢谢!

http://www.dtcms.com/a/474797.html

相关文章:

  • C语言四大排序算法实战
  • 自己做效果图的网站推广优化网站
  • 2025 年 10 月 TIOBE 指数
  • 网站建设合同属于技术合同吗企业网站设计专业好吗
  • cdr可不可做网站公司简介概况怎么写
  • 做区位分析的网站重庆的企业的网站建设
  • Claude Code 本地部署实战:打造属于你的 AI 编程助手
  • 【11408学习记录】考研数学精华:矩阵相似全解——从定义到判别一网打尽!
  • tk网站注册阿里企业邮箱电话
  • visual c 网站开发百度网站公司信息推广怎么做
  • anthropics-claude-cookbooks学习记录02
  • 海南省住房与城乡建设部网站在那些网站可以接兼职做
  • MYSQL学习笔记(个人)(第十四天)
  • pc做网站服务器网站前台模板 html
  • AngularJS 路由
  • 网站建设需要哪些费用支出网站域名骗子
  • 英文网站开发哪家好外卖网站开发
  • 保姆级教程:如何用feishu2md快速下载飞书文档为md文件
  • 上海专业网站建设公司排名做签证网站
  • 手机网站大全推荐比较有名的公司网站
  • 福州网站建设策划方案天健emp软件开发平台
  • React useState详解与使用指南(函数式更新)
  • 网站主域名南昌集团制作网站公司
  • 做视频网站的流程软件项目外包平台
  • 图片类网站建设全国卫生机构建设管理系统网站
  • 网站建设实训意见建议企业宣传网页设计
  • 最新版谷歌浏览器视频播放控件ElephVideoPlayer控件介绍
  • SAP MM供应商主数据维护接口分享
  • 第二章:模块的编译与运行-11 Preliminaries
  • 在手机上建网站小程序免费制作平台 知乎