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

简介: 本文描述在阿里云上从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

相关实践学习
如何快速创建插件agent
阿里云百炼应用基于Assistant API技术架构,结合大语言模型(LLM)的推理、知识检索增强、插件调度等能力,构建应对各类复杂场景任务的场景应用。通过集成化、直观易用的产品界面,为开发者提供了丰富的应用配置选项,包括大型语言模型(LLM)选择、Pro
相关文章
|
1月前
|
程序员 定位技术 开发者
试了试阿里云的通义灵码 2.5 版
通义灵码 2.5 版是个特别实用的工具,无论是个人开发者还是企业团队,都能从中受益。如果你也在找能提升开发效率的工具,通义灵码绝对值得一试!
102 33
试了试阿里云的通义灵码 2.5 版
|
1月前
|
关系型数据库 OLAP 数据库
拒绝等待!阿里云瑶池数据库 x Qwen3,构建增强式RAG
阿里巴巴发布的通义千问Qwen3在性能上超越多个国际顶尖模型,阿里云瑶池数据库已适配该模型,支持私域部署并与Dify无缝集成。传统RAG方案在处理复杂关系和多跳推理时存在局限,而GraphRAG通过图结构存储知识,结合Qwen3和AnalyticDB PostgreSQL,可有效解决这些问题,提升知识关联检索与分析能力。某新零售客户案例表明,GraphRAG能更好地满足高复杂度业务需求,提供直观的知识图谱可视化服务。阿里云提供Qwen3全系列模型的私域部署解决方案,确保数据安全和服务稳定性。
|
2月前
|
存储 人工智能 监控
通过阿里云Milvus与通义千问VL大模型,快速实现多模态搜索
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
|
2月前
|
云安全 人工智能 自然语言处理
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
TsingtaoAI具身智能机器人开发套件及实训方案
该产品套件创新性地融合了先进大模型技术、深度相机与多轴协作机械臂技术,构建了一个功能强大、灵活易用的人机协作解决方案。其核心在于将智能决策、精准感知与高效执行完美结合,为高校实训领域的发展注入新动力。
100 10
|
25天前
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
158 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
2月前
|
存储 人工智能 监控
钉钉对话机器人实现赞踩收集
本文介绍如何通过AppFlow记录钉钉AI对话卡片的用户反馈情况。首先确保已接入钉钉AI机器人,然后分三步实现:1) 修改钉钉AI消息卡片,添加点赞按钮并配置回调参数;2) 配置钉钉卡片点赞消息接收连接流,更新卡片状态;3) 设置日志收集节点,存储用户反馈数据。完成配置后,用户可在群聊中与机器人互动,并使用点踩点赞功能,反馈数据将被有效记录和分析。
钉钉对话机器人实现赞踩收集
|
1月前
|
缓存 并行计算 测试技术
阿里云PAI-全模态模型Qwen2.5-Omni-7B推理浅试
阿里云PAI-全模态模型Qwen2.5-Omni-7B推理浅试
222 11
|
2月前
|
人工智能 开发工具
阿里云AI Stack全量适配Qwen3模型,企业级部署效率全面升级
2025年4月29日的凌晨5点,阿里全新一代模型通义千问Qwen3正式发布并全部开源8款「混合推理模型」,包含: 6款Dense模型:0.6B、1.7B、4B、8B、14B、32B。 2款MoE模型:Qwen3-30B-A3B和旗舰版Qwen3-235B-A22B。 阿里云AI Stack已适配全量Qwen3模型,可快速部署实现Qwen3模型的开箱即用!
164 4
|
20天前
|
机器学习/深度学习 自然语言处理 算法框架/工具
实战 | Qwen2.5-VL模型目标检测(Grounding)任务领域微调教程
在目标检测领域,众多神经网络模型早已凭借其卓越的性能,实现了精准的目标检测与目标分割效果。然而,随着多模态模型的崛起,其在图像分析方面展现出的非凡能力,为该领域带来了新的机遇。多模态模型不仅能够深入理解图像内容,还能将这种理解转化为文本形式输出,极大地拓展了其应用场景。
1363 74