从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人

本文涉及的产品
多模态交互后付费免费试用,全链路、全Agent
简介: 本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。

本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。

一、开通和配置ECS

1、创建ECS实例(以Ubuntu系统为例),作为登录数据库的客户端。设置ECS用户名及登录密码(使用ecs-user登录,如果使用root安装,后续部分安装包会提示有权限风险)。

2、设置安全组配置,配置出方向端口22,并在源IP中加入本机IP。

image.png

3、本机ssh到云ECS。

二、申请钉钉机器人

1、在钉钉上申请钉钉机器人:选择一个群,点击右上角的“群设置”按钮,选择“机器人”进行添加。

image.png

 

2、根据文档说明,完成机器人申请:

image.png

3、机器人申请成功后,完成基础设置。其中消息接受模式选择“HTTP模式”;配置消息接受地址:将IP设置为前面申请的ECS大网IP,服务端口号设置为自定义好的端口号(本文以5000为例,后面的钉钉post程序中也需配置为该端口)。

image.png


三、开通百炼LLM调用服务

LLM可以自己安装,也直接使用云上提供的LLM调用服务。比如,阿里云百炼平台就提供了业界常用的系列LLM调用服务。无需自己安装,开通百炼服务,并[创建一个API KEY](https://bailian.console.aliyun.com/?tab=model#/api-key)就能实现调用。而且调用格式支持OpenAI方式,如下是百炼的一个官方示例:

import os
from openai import OpenAI
client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "你是谁?"},
    ],
    # Qwen3模型通过enable_thinking参数控制思考过程(开源版默认True,商业版默认False)
    # 使用Qwen3开源版模型时,若未启用流式输出,请将下行取消注释,否则会报错
    # extra_body={"enable_thinking": False},
)
print(completion.model_dump_json())

四、编写钉钉机器人post程序

说明:该程序运行在ECS上,用于响应钉钉机器人从钉钉上获取的信息,进行应答。

1、在ECS上安装所需的包:pip3 install dingtalkchatbot fastapi uvicorn openai dotenv

2、编写钉钉机器人服务端程序(Python脚本)。

#!/bin/python3
# -*- coding: utf-8 -*-
import os
from fastapi import FastAPI, Request
from dingtalkchatbot.chatbot import DingtalkChatbot
import uvicorn
import json
import logging
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
# 加载 .env 文件,API Key等私密信息存放在.env 文件中
#DASHSCOPE_API_KEY = "sk-695xxxxx"        # 填入用户在百炼上创建的API KEY
# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger("dingbot")
client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
# init FastAPI app
app = FastAPI()
# 使用FastAPI的装饰器定义路由
@app.post("/generate")
async def generate_response(request: Request):
    # 读取请求的JSON数据
    json_post_raw = await request.json()
    json_post = json.dumps(json_post_raw)
    json_post_list = json.loads(json_post)
    # 获取请求中的输入文本和会话Webhook
    prompt = json_post_list.get('text').get('content')
    session_webhook = json_post_list.get('sessionWebhook')
    logger.info("prompt: %s, session webhook is: %s " % (prompt, session_webhook))
    print(session_webhook)
    # 调用LLM,获取问答结果
    response = client.chat.completions.create(
        # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
        model="qwen-plus",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": prompt},
        ],
        # Qwen3模型通过enable_thinking参数控制思考过程(开源版默认True,商业版默认False)
        # 使用Qwen3开源版模型时,若未启用流式输出,请将下行取消注释,否则会报错
        # extra_body={"enable_thinking": False},
    )
    msg = response.choices[0].message.content
    # 实例化钉钉机器人对象
    dingtalk_chatbot = DingtalkChatbot(session_webhook)
    return dingtalk_chatbot.send_markdown(title = '千问AI助理', text = msg)
# 启动FastAPI应用
if __name__ == '__main__':
    uvicorn.run(app, host='0.0.0.0', port=5000, workers=1)

3、配置服务端口(本文设置为5000),配置安全组,放通入方向IP。初始调试的时候,可以配置为0.0.0.0/0,以免因为网络配置导致程序不通。调测成功后再修改为钉钉机器人服务器对应的IP(见步骤5)。

image.png

4、运行脚本:nohup python3 dingtalkpost.py &

5、安全组入方向IP获取方法:上述步骤使用nohup方式运行脚本后,会在该脚本所在目录下生成一个“nohup.out”日志文件,该文件内会记录调用钉钉机器人的源端IP,比如:

INFO:     59.82.84.108:15922 - "POST /generate HTTP/1.1" 200 OK

持续使用一段时间后,通过分析该日志文件中的源端IP,即可获取到调用钉钉机器人的IP信息,从而配置安全组。如上示例,可配置59.82.0.0/16,见:

image.png

五、效果展示

在钉钉群中添加所申请的机器人,并@该机器人进行智能问答。

image.png


参考资料:

https://developer.aliyun.com/article/1339569

相关文章
|
20天前
|
SQL 人工智能 自然语言处理
阿里云 CIO 蒋林泉:AI 大模型时代,我们如何用 RIDE 实现 RaaS 的首次落地?
本文整理自阿里云智能集团 CIO 蒋林泉在 AICon 2025 深圳的演讲,分享了阿里云在大模型应用落地中的实践经验。通过多个数字人项目案例,探讨了企业在 AI 应用中的组织转型、业务识别、产品定义与工程落地等关键环节,并提出了 RIDE 方法论(重组、识别、定义、执行),助力企业实现 AI 有效落地。
|
2月前
|
存储 运维 数据挖掘
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
在智能驾驶技术快速发展中,数据成为驱动算法进步的核心。某新能源汽车领军企业基于阿里云Milvus向量数据库构建智能驾驶数据挖掘平台,利用其高性能、可扩展的相似性检索服务,解决了大规模向量数据检索瓶颈问题,显著降低20%以上成本,缩短模型迭代周期,实现从数据采集到场景挖掘的智能化闭环,加速智能驾驶落地应用。
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
|
2月前
|
存储 机器学习/深度学习 缓存
阿里云AirCache技术实现多模态大模型高效推理加速,入选国际顶会ICCV2025
阿里云研发的AirCache技术被计算机视觉顶会ICCV2025收录,该技术通过激活跨模态关联、优化KV缓存压缩策略,显著提升视觉语言模型(VLMs)的推理效率与存储性能。实验表明,在保留仅10%视觉缓存的情况下,模型性能下降小于1%,解码延迟最高降低66%,吞吐量提升达192%。AirCache无需修改模型结构,兼容主流VLMs,已在教育、医疗、政务等多个行业落地应用,助力多模态大模型高效赋能产业智能化升级。
256 1
|
3月前
|
存储 人工智能 云计算
挑战杯专属支持资源|阿里云-AI大模型算力及实验资源丨云工开物
阿里云发起的“云工开物”高校支持计划,助力AI时代人才培养与科研创新。为“挑战杯”参赛选手提供专属算力资源、AI模型平台及学习训练资源,包括300元免费算力券、百炼大模型服务、PAI-ArtLab设计平台等,帮助学生快速掌握AI技能并构建优秀作品,推动产学研融合发展。访问链接领取资源:https://university.aliyun.com/action/tiaozhanbei。
|
5天前
|
机器学习/深度学习 人工智能 机器人
AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLA·M1具身机器人
AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLA·M1具身机器人
|
7天前
|
数据采集 自动驾驶 机器人
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
38 1
|
15天前
|
人工智能 API
阿里云百炼API-KEY在哪查询?如何获取阿里云AI百炼大模型的API-KEY?
阿里云百炼是阿里云推出的AI大模型平台,用户可通过其管理控制台获取API-KEY。需先开通百炼平台及大模型服务,即可创建并复制API-KEY。目前平台提供千万tokens免费额度,详细操作流程可参考官方指引。
|
2月前
|
人工智能 分布式计算 DataWorks
多模态数据处理新趋势:阿里云ODPS技术栈深度解析与未来展望
阿里云ODPS技术栈通过MaxCompute、Object Table与MaxFrame等核心组件,实现了多模态数据的高效处理与智能分析。该架构支持结构化与非结构化数据的统一管理,并深度融合AI能力,显著降低了分布式计算门槛,推动企业数字化转型。未来,其在智慧城市、数字医疗、智能制造等领域具有广泛应用前景。
277 6
多模态数据处理新趋势:阿里云ODPS技术栈深度解析与未来展望
|
2月前
|
人工智能 BI 语音技术
AR眼镜+AI大模型:颠覆工业设备验收流程的智能革命
本方案结合AR眼镜与AI视觉大模型,打造高效、精准、可追溯的设备验收流程。通过第一视角记录、智能识别、结构化数据生成与智能报表功能,提升验收效率与质量,助力企业实现智能化管理。