腾讯云ADP Agent Portal入门:从零搭建企业级AI智能体
引言
2026年6月5日,腾讯云ADP 4.0正式发布,其中Agent Portal作为企业级AI智能体的统一开发与管理平台,成为开发者关注的焦点。ADP(AI Development Platform)旨在帮助企业和开发者快速构建具备多轮对话、知识检索、工具调用等能力的AI智能体应用。
本文将从概念解析入手,结合实际配置与代码示例,介绍ADP Agent Portal的核心开发流程。官方文档请参考:腾讯云ADP产品文档
ADP Agent Portal 核心概念
在深入开发之前,需要理解Agent Portal的几个核心概念:
智能体(Agent)
智能体是ADP中的基本应用单元。每个智能体可以配置独立的提示词、知识库、工具集和发布策略。一个企业通常需要创建多个智能体,分别用于客服、内部问答、数据查询等不同场景。
知识库(Knowledge Base)
知识库是智能体的"记忆系统",支持从企业文档、FAQ、数据库等多源数据构建。ADP 4.0增强了RAG(检索增强生成)能力,支持混合检索策略——结合向量语义检索和关键词匹配,提升回答准确度。
工作流(Workflow)
工作流用于编排复杂的业务逻辑。通过可视化的节点编排,可以让智能体在回答用户问题之前执行多步骤处理:查询数据库、调用API、条件判断、结果聚合等。
工具插件(Plugin)
工具插件允许智能体调用外部API执行具体操作。例如:查询天气、预订会议室、获取股票数据等。ADP提供了HTTP接口型插件的标准规范。
环境准备与SDK接入
ADP提供Python和JavaScript SDK,可通过包管理器安装:
# Python SDK pip install tencentcloud-sdk-python-adp # Node.js SDK npm install tencentcloud-adp-sdk初始化SDK客户端
# adp_client_init.py from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.adp.v20231001 import adp_client class ADPClientBuilder: """ ADP SDK客户端初始化 使用腾讯云API密钥进行认证 """ def __init__(self, secret_id, secret_key, region="ap-guangzhou"): self.credential = credential.Credential(secret_id, secret_key) # HTTP配置 http_profile = HttpProfile() http_profile.endpoint = "adp.tencentcloudapi.com" client_profile = ClientProfile() client_profile.httpProfile = http_profile self.client = adp_client.AdpClient( self.credential, region, client_profile ) def get_client(self): return self.client # 使用示例(凭证通过环境变量注入) import os builder = ADPClientBuilder( secret_id=os.environ.get("TENCENT_SECRET_ID"), secret_key=os.environ.get("TENCENT_SECRET_KEY") ) client = builder.get_client()智能体配置:LLM+RAG实战
创建知识库并上传文档
# knowledge_base_setup.py from tencentcloud.adp.v20231001 import models def create_knowledge_base(client, kb_name, description): """ 创建知识库 知识库是RAG能力的基础,用于存储和检索企业文档 """ request = models.CreateKnowledgeBaseRequest() request.Name = kb_name request.Description = description # 设置文档切分策略:chunk_size影响检索粒度 request.ChunkConfig = { "ChunkSize": 500, # 每个文本块500字符 "ChunkOverlap": 50, # 块间重叠50字符,保持语义连贯性 } response = client.CreateKnowledgeBase(request) kb_id = response.KnowledgeBaseId print(f"知识库创建成功,ID: {kb_id}") return kb_id def upload_documents_to_kb(client, kb_id, file_paths): """ 批量上传文档到知识库 支持格式:PDF、DOCX、TXT、Markdown、HTML """ request = models.UploadKnowledgeDocumentsRequest() request.KnowledgeBaseId = kb_id request.DocumentPaths = file_paths # 本地文件路径列表 response = client.UploadKnowledgeDocuments(request) print(f"文档上传任务已提交,文档数量: {len(file_paths)}") # 文档上传后ADP会自动进行解析和向量化 # 可以通过DescribeKnowledgeBase接口查询处理进度 return response配置智能体的LLM与检索策略
# agent_config.py from tencentcloud.adp.v20231001 import models def configure_agent_with_rag(client, app_name, kb_id): """ 配置带有RAG能力的智能体应用 核心配置:LLM模型选择、知识库关联、检索策略、提示词模板 """ request = models.CreateAppRequest() request.Name = app_name # 选择LLM模型(ADP 4.0支持的模型) request.ModelConfig = { "ModelType": "hunyuan-large", # 混元大模型 "Temperature": 0.3, # 低温度保证回答准确性 "MaxTokens": 2048, "TopP": 0.9, } # 配置RAG检索策略 request.KnowledgeConfig = { "KnowledgeBaseIds": [kb_id], "RetrievalStrategy": "hybrid", # 混合检索:向量+关键词 "TopK": 5, # 每次检索返回Top5相关文档块 "ScoreThreshold": 0.65, # 相关性分数阈值,低于此值的文档不参与回答 "RerankEnabled": True, # 启用重排序,提升检索精度 } # 设置系统提示词 request.SystemPrompt = """ 你是一个企业内部的AI助手,名为"华万智能助手"。 回答规则: 1. 优先基于知识库中的企业文档回答问题,并注明引用来源 2. 如果知识库中没有相关信息,明确告知用户并提供建议 3. 保持专业、简洁的回复风格 4. 遇到不确定的问题时,引导用户联系人工客服 知识库范围:企业产品文档、内部FAQ、操作手册 """ response = client.CreateApp(request) app_id = response.AppId print(f"智能体应用创建成功,AppId: {app_id}") return app_idWorkflow编排:多步骤业务处理
ADP的Workflow功能允许通过节点编排实现复杂的多步骤处理逻辑。以下是一个"工单查询与转交"的Workflow配置示例:
# workflow_example.py def create_ticket_workflow(client, app_id): """ 创建工单处理工作流 流程:用户提问 → 意图识别 → 查询工单状态 → 判断是否需要转交 → 回复用户 """ request = models.CreateWorkflowRequest() request.AppId = app_id request.Name = "工单查询与转交流程" # 定义工作流节点(JSON配置) request.Nodes = [ { "NodeId": "start", "Type": "start", # 起始节点 "Label": "用户发起工单查询", "Config": { "RequiredSlots": [ # 必要的信息槽位 {"Name": "ticket_id", "Prompt": "请提供您的工单编号"}, {"Name": "query_type", "Prompt": "您想查询工单状态还是需要转交处理?"} ] } }, { "NodeId": "intent_classify", "Type": "llm", # LLM推理节点 "Label": "意图识别", "Config": { "Prompt": "判断用户的意图:A-查询工单状态, B-转交工单给其他部门", "OutputKey": "intent" } }, { "NodeId": "query_ticket", "Type": "api_call", # API调用节点 "Label": "查询工单系统", "Config": { "Url": "https://api.example.com/tickets/{{ticket_id}}", "Method": "GET", "Headers": { "Authorization": "Bearer {{TICKET_API_KEY}}" } } }, { "NodeId": "condition_check", "Type": "condition", # 条件判断节点 "Label": "判断是否需要转交", "Config": { "Expression": "{{intent}} == 'B'", # 用户选择转交 "TrueBranch": "transfer_node", "FalseBranch": "reply_node" } }, { "NodeId": "transfer_node", "Type": "api_call", "Label": "转交工单", "Config": { "Url": "https://api.example.com/tickets/{{ticket_id}}/transfer", "Method": "POST", "Body": {"department": "{{target_department}}"} } }, { "NodeId": "reply_node", "Type": "llm", "Label": "生成回复", "Config": { "Prompt": """ 根据工单查询结果生成回复: - 工单状态:{{ticket_status}} - 处理人:{{assignee}} - 创建时间:{{created_at}} 回复要求:简洁明了,包含关键信息。 """ } }, { "NodeId": "end", "Type": "end", # 结束节点 "Label": "返回结果" } ] # 定义节点间的连线(流转逻辑) request.Edges = [ {"From": "start", "To": "intent_classify"}, {"From": "intent_classify", "To": "query_ticket"}, {"From": "query_ticket", "To": "condition_check"}, {"From": "condition_check", "To": "transfer_node"}, # True分支 {"From": "condition_check", "To": "reply_node"}, # False分支 {"From": "transfer_node", "To": "end"}, {"From": "reply_node", "To": "end"}, ] response = client.CreateWorkflow(request) print(f"工作流创建成功,WorkflowId: {response.WorkflowId}") return response.WorkflowId发布与接入
智能体开发完成后,需要通过发布流程使其对外提供服务:
# publish_agent.py def publish_agent(client, app_id): """ 发布智能体应用 发布后可通过API endpoint进行调用 """ request = models.CreateReleaseRequest() request.AppId = app_id request.ReleaseChannel = "api" # 通过API渠道发布 response = client.CreateRelease(request) release_id = response.ReleaseId print(f"版本发布中,ReleaseId: {release_id}") return release_id def chat_with_agent(client, app_id, user_query): """ 调用已发布的智能体进行对话 适用于将智能体嵌入企业微信、Web页面或其他应用 """ request = models.ChatRequest() request.AppId = app_id request.Query = user_query # 会话ID用于维持多轮对话上下文 request.SessionId = "user_session_001" # 实际项目中动态生成 response = client.Chat(request) # 返回结构包含回答文本和引用来源 return { "answer": response.Answer, "references": response.References, # 知识库引用列表 "confidence": response.Confidence, # 回答置信度 }为什么企业需要Agent Portal
降低AI应用开发门槛
传统的AI应用开发需要模型训练、部署、调优等复杂流程。ADP Agent Portal通过预置LLM、拖拽式工作流编排和可视化知识库管理,将开发周期从数周缩短到数天。技术团队可以聚焦于业务逻辑设计,而非底层模型优化。
统一管理多场景智能体
对于同时运行客服机器人、内部知识问答、数据分析助手的企业而言,Agent Portal提供的统一管理能力尤为重要。它支持:集中化的权限管理、版本灰度发布、对话效果监控和A/B对比测试。
安全与合规
企业数据不出租户、知识库文档访问权限细粒度控制——ADP在满足企业安全合规需求方面提供了基础设施保障。对于金融、医疗等强合规行业而言,这一点是选择AI平台的关键考量。
开发建议与踩坑提醒
知识库文档质量优先于数量。少量精心编写的结构化文档的检索效果优于大量未经整理的原始文档。建议对文档做篇幅控制(单篇控制在2000字以内)、标题层级规范化和关键信息前置。
Workflow节点控制在10个以内。过于复杂的Workflow不仅调试困难,也可能因为节点间延迟叠加导致响应变慢。复杂业务建议拆分为多个子工作流。
提示词设计是效果的关键。系统提示词中对角色、边界、引用规则的清晰定义,直接决定了智能体的回答质量。建议通过多轮A/B测试迭代优化提示词。
关注多轮对话的上下文管理。对于需要多轮交互的场景,合理设置SessionId的过期时间和上下文窗口大小,避免历史对话过长导致的回答质量下降。
结语
ADP Agent Portal将LLM能力、知识库检索和工作流编排整合在统一的开发平台上,为企业构建AI智能体应用提供了一套端到端的解决方案。随着ADP 4.0的发布,混合检索、多模型适配和更灵活的Workflow编排能力将进一步降低企业智能化转型的技术门槛。
对于已经使用企业微信、腾讯会议等腾讯系SaaS产品的企业而言,ADP的生态集成优势尤为明显——智能体可以无缝接入已有的办公场景,实现从工具使用到智能决策的升级。
上海华万通信科技有限公司,专注为企业提供腾讯系SaaS产品的一站式选型与集成服务,包括腾讯会议、企业微信、腾讯电子签等。我们致力于帮助企业实现高效的数字化转型与智能化升级。
