Large Language Model(LLM)应用开发学习实践(一)

一、百炼平台DashScope平台的联系与区别

阿里云百炼平台(Bailian)与DashScope(灵积)都是阿里云提供的大模型服务产品,二者都基于通义千问(Qwen)等大模型,但在定位、功能、目标用户和使用方式上存在明显区别。整体上两者的关系为互补演进,DashScope 提供原子能力,百炼在此之上构建应用生态。

温馨提示:

DashScope控制台已逐步整合进百炼平台,DashScope仍作为阿里云通义千问系列大模型的底层API服务存在,适合高级开发者直接集成。两个平台共享同一套计费体系与配额管理。

(一)DashScope(灵积)平台

DashScope提供通义千问系列原始大模型API,通过HTTP/gRPC API或SDK(如dashscope Python包)调用大模型。适合已有工程能力,只需"模型能力"的团队。

(二)大模型服务百炼平台

阿里云大模型服务百炼平台在DashScope基础上封装了应用层能力,如预置应用模板、可视化搭建工具(拖拽式配置Prompt、知识库、插件、MCP工具)、支持Agent开发(可组合大模型+外部MCP工具+记忆存储+决策逻辑)、一键发布为Web应用或API等。同时,支持直接调用通义千问系列大模型API(底层通过DashScope)和模型微调等。

二、开发实践

实现功能

  1. 基于qwen-plus大模型的无记忆单次问答;

  2. AI Agent简单自定义工具的调用。

开发工具及大模型平台

阿里云大模型服务平台百炼、LangChain、anaconda、PyCharm

注意事项

  1. 基于langchain_community.chat_models调用通义千问模型,需要安装DashScope包;

  2. 在百炼控制台申请的API Key,可以直接用于调用DashScope的API。两个平台共享同一套计费体系和配额管理;

  3. API Key存储于.env文件,采用设置环境变量的方式使用。

详细参考文档

LangChain Doc - ChatTongyi

LangChain Doc - Tools

(一)关键代码

python 复制代码
import os
from dotenv import load_dotenv
from langchain_community.chat_models import ChatTongyi
from langchain_core.messages import HumanMessage,SystemMessage,AIMessage,ToolMessage
# 自定义Tools文件并自动识别所有工具
import Tools
from langchain_core.tools.structured import StructuredTool

# 解析.env文件并将所有变量设置为环境变量
load_dotenv()
QWEN_API_KEY = os.getenv("QWEN_API_KEY")

# 预定义大语言模型
ChatLLM = ChatTongyi(
    model="qwen-plus",
    api_key=QWEN_API_KEY,
    top_p=0.8
)

# 为大语言模型添加调用工具
# 通过from langchain.tools import tool引入@tool装饰器包装的工具函数,其取出的obj对象类型为langchain_core.tools.structured.StructuredTool
# StructuredTool是BaseTool的子类
tools_obj = []
tools_dic = {}
for name, obj in vars(Tools).items():
    if isinstance(obj, StructuredTool):
        tools_dic[name] = obj
        tools_obj.append(obj)
ChatLLM_tools = ChatLLM.bind_tools(tools_obj)

# 预定义系统提示词
SystemPrompt = "你是一位资深的BIM工程师,仅回答BIM领域相关的问题。若遇到与BIM领域无关或因信息不充分导致无法回答的问题,请回答'非常抱歉,无法为您当前遇到的问题提供一个较为准确的答复!'"

# 构建对话
UserMessage = ""
while UserMessage != "quit":
    UserMessage = input("请输入您的问题:")
    if UserMessage == "quit":
        break
    # 消息机制构建
    message = [
        SystemMessage(content=SystemPrompt),
        HumanMessage(content=UserMessage)
    ]
    # 消息提交大模型,模型决定是否需要调用工具
    response = ChatLLM_tools.invoke(message)
    #print(response) #测试
    # 检查是否有工具调用
    if response.tool_calls:
        # 执行所有工具调用
        tool_messages = []
        for tool_call in response.tool_calls:
            #print(tool_call) #测试
            tool_name = tool_call["name"]
            tool_args = tool_call["args"]
            # LLM回传信息给tools,并为对应tool传递参数
            tool_result = tools_dic[tool_name].invoke(tool_args)
            # 构造 ToolMessage 回传
            tool_messages.append(
                ToolMessage(content=str(tool_result), tool_call_id=tool_call["id"])
            )
        # 将原始消息 + 模型响应 + 工具结果再次传给模型
        final_response = ChatLLM_tools.invoke(message + [response] + tool_messages)
        print(final_response.content)
    else:
        # 模型直接回答,无需工具
        print(response.content)
python 复制代码
# Tools工具集
# @tool装饰器会将一个普通函数转换为一个langchain_core.tools.structured.StructuredTool对象。这个Tool对象包含:名称、描述、可调用函数、参数schema等
from langchain.tools import tool

@tool
def bim_software_intro(software_name: str) -> str:
    """在询问BIM软件的使用效果时调用该函数,该函数的作用是返回所询问BIM软件的使用效果及主观评价内容。

    Args:
        software_name:询问的BIM软件的名称
    """
    comment = "{0}软件解决了BIM领域中的生产痛难点,提高了建筑业生产效率与质量,推动了建筑业的智能信息化。".format(software_name)
    return comment

(二)实践结果

大模型应用开发库文档:

/*1*/ GitHub - openai/openai-python: The official Python library for the OpenAI API

/*2*/ LangChain overview - Docs by LangChain

/*3*/ LangChain integrations packages

常用大模型应用开发官方网址:

1\] [智谱AI开放平台](https://open.bigmodel.cn/login?channel_name=baidu_sem_track&channel_link_type=web&_sc_tid=Rps&channel_utm_source=20250710&hash_key=y7qerXtFwu74vSsj0hx3&callback_id=tpgBKnpK&sat_cf=2&_data_version=0.6.1&channel_utm_campaign=baidu_SEM_06&project=production2&_channel_track_key=NxNWrZeV&link_version=1&channel_keyword_id=1159133088331&channel_ad_id=122280216697&channel_account_id=62879718&channel_keyword=%E6%99%BA%E8%B0%B1&channel_adgroup_id=12255248387&channel_campaign_id=1116818864&bd_vid=11961011251562818233 "智谱AI开放平台") \[2\] [MiniMax](https://www.minimaxi.com/ "MiniMax") \[3\] [大模型服务平台百炼 - 大模型应用构建 - 阿里云](https://www.aliyun.com/product/bailian "大模型服务平台百炼 - 大模型应用构建 - 阿里云") [DashScope(灵积)](https://dashscope.aliyun.com/ "DashScope(灵积)") \[4\] [DeepSeek \| 深度求索](https://www.deepseek.com/ "DeepSeek | 深度求索") \[5\] [火山引擎-你的AI云](https://www.volcengine.com/activity/ark?utm_source=5&utm_medium=sem_bing&utm_term=sem_bing_vg_pinzhuan_biaoti_dmxth&utm_campaign=biaoti&utm_content=ai_damoxingtehui "火山引擎-你的AI云") \[6\] [Moonshot AI 开放平台 - Kimi 大模型 API 服务](https://platform.moonshot.cn/docs/overview "Moonshot AI 开放平台 - Kimi 大模型 API 服务") \[7\] [千帆大模型平台-企业级一站式大模型开发及应用开发平台-百度智能云](https://cloud.baidu.com/product-s/qianfan_home "千帆大模型平台-企业级一站式大模型开发及应用开发平台-百度智能云") \[8\] [腾讯混元大模型_大语言模型_自然语言大模型- 腾讯云](https://cloud.tencent.com/act/pro/Hunyuan-promotion?fromSource=gwzcw.8678926.8678926.8678926&utm_medium=cpc&utm_id=gwzcw.8678926.8678926.8678926&msclkid=3e3645c7fc35134a93a32caf5aa71016 "腾讯混元大模型_大语言模型_自然语言大模型- 腾讯云") \[9\] [xAI(Grok系列大模型)](https://x.ai/ "xAI(Grok系列大模型)") \[10\] [Gemini系列大模型](https://ai.google.dev/gemini-api/docs "Gemini系列大模型") \[11\] [OpenAI系列大模型](https://openai.com/zh-Hans-CN/api/ "OpenAI系列大模型") \[12\][Claude系列大模型](https://platform.claude.com/docs/en/about-claude/models/overview " Claude系列大模型") \[13\] [Ollama本地大模型部署框架](https://ollama.com/ "Ollama本地大模型部署框架") ## 网络参考资料: * [60-Tool的要素与实操步骤_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1ZppNzHEY4?spm_id_from=333.788.videopod.episodes&vd_source=a17b26e6f5dce43e0b4b220aeb13a517&p=60 "60-Tool的要素与实操步骤_哔哩哔哩_bilibili")

相关推荐
光影少年3 小时前
前端如何开发ai生成图片及流式回答
前端·人工智能·langchain
EdisonZhou17 小时前
MAF快速入门(12)主工作流+子工作流
llm·aigc·agent·.net core
nvd1119 小时前
深入 ReAct Agent 的灵魂拷问:从幻觉到精准执行的调试实录
python·langchain
wopelo1 天前
LangChain v0.3 ReAct Agent 原理浅析
langchain·agent
TGITCIC1 天前
langchain入门(五)- 用mongodb管理提示词以及以restful service暴露
langchain·ai大模型·rag·ai agent·ai智能体·agent开发·大模型产品
weixin_462446231 天前
从零搭建AI关系图生成助手:Chainlit 结合LangChain、LangGraph和可视化技术
人工智能·langchain·langgraph·chainlit
人工干智能1 天前
LangChain 中的「工具(Tool)」和「工具包(Toolkit)」漫谈
langchain·llm
TGITCIC1 天前
LangGraph:让AI学会“回头是岸”的智能体架构
人工智能·rag·ai agent·图搜索·ai智能体·langgraph·graphrag
山顶夕景2 天前
【VLM】Format Decoupled Reinforcement Learning for Document OCR
大模型·llm·ocr·多模态·文档智能·vlm