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

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

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

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

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

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

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

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

python 复制代码
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:

python 复制代码
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 错误,防止影响观感)

然后进行工具函数定义:

python 复制代码
@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 result
        
    except Exception as e:
        return f"获取桌面文件时出错:{str(e)}"

tools = [search_Desktop_app]

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

tools = [search_Desktop_app]

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

AI-agent配置:

python 复制代码
# 构建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函数:

python 复制代码
def main():
    print("应用开始执行。\n")
    while True:
        user_question = input("请输入您的问题:")
        if user_question.lower() in ['quit', 'exit']:
            print("👋 再见!")
            break
        try:
            # 绑定工具并调用
            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 生成基于实际数据的回答

  • 异常处理 :捕获并显示运行时的错误信息

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

bash 复制代码
python 文件名.py

我们的终端这时会出现:

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

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

相关推荐
HyperAI超神经几秒前
在线教程丨端侧TTS新SOTA!NeuTTS-Air基于0.5B模型实现3秒音频克隆
人工智能·深度学习·机器学习·音视频·tts·音频克隆·neutts-air
wwwzhouhui4 分钟前
2025年11月1日-AI 驱动教学革命:3 分钟生成专业级动画课件,还能导出视频 GIF!
人工智能·音视频·ai动画教学
sunsunyu034 分钟前
视频转图片工具
python·音视频
国科安芯9 分钟前
抗辐照MCU芯片在无人叉车领域的性能评估与选型建议
网络·人工智能·单片机·嵌入式硬件·安全
软件开发技术深度爱好者9 分钟前
Python类中方法种类介绍
开发语言·python
用户51914958484519 分钟前
原型污染攻击工具揭秘:Prototype Pollution Gadgets Finder
人工智能·aigc
钢蛋22 分钟前
LangChain v1.0 的 Agents:让 AI 真正"动起来"
langchain
用户83562907805123 分钟前
使用Python合并Word文档:实现高效自动化办公
后端·python
VXHAruanjian88827 分钟前
以智促效,释放创新力量,RPA助力企业全面自动化变革
大数据·人工智能
Godspeed Zhao28 分钟前
自动驾驶中的传感器技术76——Navigation(13)
人工智能·机器学习·自动驾驶