大数跨境

技术分享 | 基于 Amazon Bedrock AgentCore + Web Search 构建 AI 竞争分析助手

技术分享 | 基于 Amazon Bedrock AgentCore + Web Search 构建 AI 竞争分析助手 伊克罗德云服务
2026-07-13
1
导读:你只需要输入一句话,Agent 就自动执行多维度搜索、交叉验证、结构化分析,3 分钟内输出一份完整的竞争情报报告。

在快节奏的商业环境中,竞争情报是企业决策的关键依据。传统人工搜集整理方式不仅耗时,且易遗漏关键动态。

本文将展示如何利用亚马逊云科技最新发布的 Web Search on Amazon Bedrock AgentCore(2026 年 6 月 GA),构建一个实时联网搜索、自动分析并生成结构化竞争报告的 AI 助手。用户仅需输入指令,Agent 即可在 3 分钟内完成多维度搜索、交叉验证并输出完整报告。

一、技术方案选型

为什么选择 Amazon Bedrock AgentCore + Web Search?

需求

AgentCore Web Search 优势

信息实时性

Amazon 自建索引,数百亿文档,分钟级刷新

数据安全

查询不离开亚马逊云,零数据外泄

免运维

全托管 MCP Connector,无需管理搜索 API

质量摘要

内置语义段落提取 + 知识图谱,返回模型友好格式

生产就绪

AgentCore Runtime 提供 Serverless 自动扩缩容

技术栈总览

组件

技术选择

作用

Agent 框架

Strands Agents SDK(AWS 开源)

Agent 编排和工具调用

联网搜索

AgentCore Web Search

实时互联网信息获取

工具网关

AgentCore Gateway (MCP)

统一工具入口 + 安全策略

运行时

AgentCore Runtime

Serverless Agent 托管

记忆

AgentCore Memory

保存历史分析上下文

大模型

Bedrock

推理与报告生成

可观测性

AgentCore Observability

追踪每次 Agent 执行

二、整体架构图

Agent 接收到用户请求后,按四个阶段依次执行:

Step 1--意图解析:确认目标竞品、时间范围、分析维度

Step 2--多维度并行搜索:生成 5 个精准英文搜索查询,从产品、商业、市场、技术、生态五维度采集信息

Step 3--交叉分析:信息去重合并、多源交叉验证、时间线排序、趋势识别

Step 4--报告生成:输出结构化竞争情报报告,包含来源引用和战略建议

三、动手实践:完整构建过程

前提条件:在 IDE 环境中安装好所有包和依赖

#环境要求
Python 3.11+
AWS CLI v2 (configured)
boto3 >= 1.35.0

#安装依赖
pip install strands-agents strands-agents-tools boto3 mcp-proxy-for-aws

step 1:创建 AgentCore Gateway 并启用 Web Search 工具

首先创建 AgentCore Gateway 并添加 Web Search 作为 Target:

import time
import boto3

gateway_client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
GATEWAY_ROLE_ARN = "arn:aws:iam::accountid:role/you-role-name"

#1. 创建 Gateway
gateway_response = gateway_client.create_gateway(
    name="competitive-intel-gateway",
    protocolType="MCP",
    description="Gateway for Competitive Intelligence Agent",
    roleArn=GATEWAY_ROLE_ARN,
    authorizerType="AWS_IAM"
)
gateway_id = gateway_response["gatewayId"]

#2. 轮询等待 Gateway 状态变为 ACTIVE
while True:
    status_response = gateway_client.get_gateway(gatewayIdentifier=gateway_id)
    current_status = status_response["status"]
    print(f"当前状态:{current_status}")

    if current_status == "READY":
        break
    elif current_status in ["FAILED", "DELETING"]:
        raise Exception(f"Gateway 创建失败,当前状态为:{current_status}")
    time.sleep(5)

#3. 添加 Web Search Target
print("正在关联 Web Search 工具...")
gateway_client.create_gateway_target(
    gatewayIdentifier=gateway_id,
    name="web-search-tool",
    targetConfiguration={
        "mcp": {
            "connector": {
                "source": {"connectorId": "web-search"},
                "configurations": [{"name": "WebSearch", "parameterValues": {}}],
            }
        }
    },
    credentialProviderConfigurations=[
        {"credentialProviderType": "GATEWAY_IAM_ROLE"}
    ],
)
print(f"Gateway {gateway_id} 已创建,Web Search 工具已成功启用!")

step 2:配置 Agentcore IAM 角色权限

创建 Runtime 执行角色的权限策略,并添加信任策略 (Trust Policy),允许 bedrock-agentcore.amazonaws.com 服务

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokeGateway",
            "Effect": "Allow",
            "Action": "bedrock-agentcore:InvokeGateway",
            "Resource": "arn:aws:bedrock-agentcore:us-east-1:account-id:gateway/competitive-intel-gateway-1s9kpehlxd"
        },
        {
            "Sid": "BedrockModelInvocation",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/*",
                "arn:aws:bedrock:us-east-1:account-id:*"
            ]
        },
        {
            "Sid": "InvokeWebSearch",
            "Effect": "Allow",
            "Action": "bedrock-agentcore:InvokeWebSearch",
            "Resource": "arn:aws:bedrock-agentcore:us-east-1:aws:tool/web-search.v1"
        }
    ]
}

step 3:构建竞争分析 Agent

这是核心代码,包含完整的竞争分析工作流。Agent 通过 System Prompt 定义分析方法论,通过 MCP 协议自动发现并调用 Web Search 工具:

"""
competitive_intel_agent.py
竞争分析 AI 助手 - 基于 Amazon Bedrock AgentCore + Web Search
"""
from datetime import date
from strands import Agent
from strands.models.bedrock import BedrockModel
from strands.tools.mcp import MCPClient
from mcp_proxy_for_aws.client import aws_iam_streamablehttp_client

#============================================================
#配置
#============================================================
GATEWAY_URL = "https://competitive-intel-gateway-1s9kpehlxd.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp" #替换成自己账号中的 url
AWS_REGION = "us-east-1"
MODEL_ID = "xxxxx"

#============================================================
#竞争分析专用 System Prompt
#============================================================

##你的角色
你为产品团队和战略团队提供实时、准确、有深度的竞品分析报告。你擅长从公开信息中洞察竞品的战略意图和市场动向
##分析方法论
当用户提出竞品分析需求时,严格按照以下流程执行:
###Phase 1: 需求理解
- 确认目标竞品名称
- 确认分析时间范围
- 确认关注的分析维度(产品/定价/市场/技术/生态)

###Phase 2: 多维度信息采集
对每个分析维度,制定 2-3 个精准的英文搜索查询(英文搜索覆盖面更广),从不同角度收集信息:
- **产品动态**: 新功能发布、产品路线图、版本更新
- **商业策略**: 定价变化、目标市场转移、营销活动
- **市场表现**: 分析师评价、市场份额、客户反馈
- **技术架构**: 技术博客、开源贡献、技术选型变化
- **生态合作**: 新合作伙伴、集成、收购

###Phase 3: 分析与洞察
- 识别关键事件并排列时间线
- 发现趋势和模式
- 评估对我方的潜在影响
- 提出应对建议

###Phase 4: 输出报告
严格按照以下格式输出:

---

#竞争情报报告:[竞品名称]

**分析时间范围**: [时间范围]
**报告生成时间**: {date.today().isoformat()}
**信息来源数**: [N] 条

#核心发现(Executive Summary)
> [3-5 句话概括最重要的发现]

##关键事件时间线
| 日期 | 事件 | 影响程度 | 来源 |
|------|------|---------|------|
| ... | ... | 高/中/低 | [链接] |

##产品动态分析
###新功能与更新
[细节分析]
###技术方向判断
[基于产品动态推断的技术路线]

##商业策略分析
###定价与包装变化
[如有变化,详细说明]
###目标市场与定位
[市场动向分析]

##生态与合作
[合作伙伴、集成、收购等动态]

##市场声音
###分析师观点
[来自 Gartner、Forrester 等的评价]
###客户与社区反馈
[开发者社区、社交媒体的讨论]

##对我方的影响评估
| 影响维度 | 影响程度 | 说明 |
|---------|---------|------|
| ... | 高/中/低 | ... |

##应对建议
1. [短期行动建议]
2. [中期策略调整]
3. [长期需要关注的方向]

##信息来源
[编号列出所有来源的标题、URL、发布时间]

##后续追踪建议
[建议持续关注的信号和触发条件]

---

##重要原则
- 每条重要信息必须标注来源 URL
- 区分"事实"和"推测",推测部分需明确标注
- 如果某个维度没有搜索到有效信息,诚实说明
- 英文搜索优先(覆盖面更广),中文补充搜索
- 关注最近 3 个月的信息,优先呈现最新动态
"""

#============================================================
#Agent 创建与执行
#============================================================
def create_competitive_intel_agent():
    mcp_client = MCPClient(lambda: aws_iam_streamablehttp_client(
        endpoint=GATEWAY_URL,
        aws_region=AWS_REGION,
        aws_service="bedrock-agentcore",
    ))
    model = BedrockModel(model_id=MODEL_ID)
    return mcp_client, model
def analyze_competitor(query: str) -> str:
    """
    执行竞争分析

    Args:
        query: 用户的分析需求,例如 "分析 Datadog 近三个月的产品动态"

    Returns:
        结构化的竞争情报报告
    """
    mcp_client, model = create_competitive_intel_agent()
    with mcp_client:

        #自动发现 Gateway 上的 Web Search 工具
        tools = mcp_client.list_tools_sync()
        print(f"已连接 AgentCore Gateway, 发现 {len(tools)} 个工具")

        #创建 Agent
        agent = Agent(
            model=model,
            tools=tools,
            system_prompt=SYSTEM_PROMPT
        )

        #执行分析
        print(f"开始竞争分析:{query}")
        print("=" * 60)
        result = agent(query)
        print("=" * 60)
        print("分析完成")
        return result
class CompetitiveIntelTracker:
    """持续追踪模式 - 记住历史分析,识别变化趋势"""

    def __init__(self, memory_store_id: str):
        self.memory_store_id = memory_store_id
        self.mcp_client, self.model = create_competitive_intel_agent()

    def analyze(self, query: str, session_id: str = "default") -> str:
        """带上下文记忆的分析"""
        with self.mcp_client:
            tools = self.mcp_client.list_tools_sync()
            agent = Agent(
                model=self.model,
                tools=tools,
                system_prompt=SYSTEM_PROMPT + f"""

\n\n##历史追踪模式
你正在持续追踪模式下工作。利用 Memory 中的历史分析记录:
- 对比本次发现与上次分析的变化
- 标注"新发现"vs"持续趋势"
- 在报告末尾增加"与上次分析对比"章节
""",
                memory_config={
                    "memory_store_id": self.memory_store_id,
                    "session_id": session_id,
                    "namespace": "competitive-intel"
                }
            )
            return agent(query)

step 4:打包为容器镜像并推送到 ECR

Step 3 的代码可直接在本地运行(用于开发调试),但要部署到 AgentCore Runtime 作为生产服务,需要将其打包为 Docker arm64 架构镜像并推送到 Amazon ECR。

4.1 创建 Dockerfile

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY competitive_intel_agent.py .
COPY entrypoint.py .
EXPOSE 8080
CMD ["python", "entrypoint.py"]

4.2 创建 entrypoint.py(HTTP 服务入口)

AgentCore Runtime 通过 HTTP 调用 Agent 容器,需要一个服务入口:

"""entrypoint.py - AgentCore Runtime 入口"""
from fastapi import FastAPI, Request
from competitive_intel_agent import analyze_competitor
import uvicorn
import traceback
app = FastAPI()
@app.post("/invoke")
@app.post("/invocations")
@app.post("/")
async def invoke(request: Request):
    try:
        body = await request.json()
        query = body.get("prompt") or body.get("query") or body.get("input", "")
        session_id = body.get("session_id", "default")

        if not query:
            return {"error": "No prompt/query provided", "received_body": body}

        result = analyze_competitor(query)
        return {"response": str(result)}
    except Exception as e:
        traceback.print_exc()
        return {"error": str(e), "traceback": traceback.format_exc()}
#健康检查(AgentCore 可能用来探活)
@app.get("/health")
@app.get("/ping")
@app.get("/")
async def health():
    return {"status": "healthy"}
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8080)

4.3 创建 requirements.txt

strands-agents>=0.3.0
strands-agents-tools>=0.3.0
boto3>=1.35.0
mcp-proxy-for-aws>=0.1.0
fastapi>=0.100.0
uvicorn>=0.23.0

4.4 构建并推送到 ECR

#创建 ECR 仓库
aws ecr create-repository --repository-name competitive-intel-agent --region us-east-1

#登录 ECR
aws ecr get-login-password --region us-east-1 | \
    docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com

#构建镜像
docker build -t competitive-intel-agent .

#打 Tag 并推送
docker tag competitive-intel-agent:latest \
    <ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com/competitive-intel-agent:latest
docker push <ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com/competitive-intel-agent:latest

step 5:部署到 AgentCore Runtime

使用 Step 4 推送到 ECR 的镜像,部署到 AgentCore Runtime,可通过提供的脚本或者直接控制台创建。

import boto3
runtime_client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
#部署 Agent
response = runtime_client.create_agent_runtime(
    agentRuntimeName="competitive-intel-agent",
    description="AI Competitive Intelligence Agent with real-time web search",
    agentRuntimeArtifact={
        "containerConfiguration": {
            "containerUri": "<ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com/competitive-intel-agent:latest"
        }
    },
    roleArn="arn:aws:iam::<ACCOUNT_ID>:role/AgentCoreRuntimeRole",
    networkConfiguration={"networkMode": "PUBLIC"}
)

#创建调用端点
endpoint = runtime_client.create_agent_runtime_endpoint(
    agentRuntimeId=response["agentRun-timeId"],
    name="competitive-intel-endpoint"
)
print(f" Agent 已部署:{endpoint['agentRuntimeEndpoint']['url']}")

step 6:测试与验证

Agent 部署完成后,即可通过 API 或者控制台 playground 测试,下图为输出示例:

四、本方案的关键设计决策与最佳实践

1.结果质量保障

Web Search 返回的每条结果包含结构化数据:

{
   "title": "文章标题",
   "url": "https://...",
   "text": "语义提取的相关段落(非原始 HTML)",
   "publishedDate": "2026-06-18T04:43:00-07:00"
}

Agent 在 System Prompt 中被要求:

· 标注每条信息的来源和时间

· 区分事实与推测

· 发现矛盾时呈现多方观点

· 不编造搜索结果中不存在的信息

2. Memory 实现持续追踪

通过 AgentCore Memory 的语义记忆,Agent 可以实现跨会话的趋势追踪,这使得 Agent 能够输出"变化检测"类型的洞察,这是单次搜索无法实现的。

3. 错误处理策略

· 如果某个搜索查询返回空结果:换一种表述重试(最多 2 次)

· 如果所有搜索都无结果:诚实报告"在该维度未找到近期公开信息"

· 如果信息相互矛盾:标注 [存在争议] 并呈现不同观点

· 如果信息过旧(超过请求时间范围):标注日期并提示可能已过时

五、结语

本文展示了如何利用 Amazon Bedrock AgentCore + Web Search 构建一个面向竞争分析场景的 AI 助手。核心价值在于:

传统方式

AI 竞争分析助手

人工搜集 4-6 小时/周

Agent 自动完成 3 分钟/次

信息覆盖不完整

多角度并行搜索,覆盖面广

分析视角单一

多维度交叉验证

时效性差(周报/月报)

实时按需,随时可查

难以追踪趋势变化

Memory 支持持续追踪

关键技术亮点:

· Web Search on AgentCore:全托管联网搜索,零数据外泄,分钟级刷新

· MCP 协议:Agent 通过标准协议自动发现和调用搜索工具

· AgentCore Runtime:Serverless 部署,自动扩缩容

· AgentCore Memory:实现跨会话的持续追踪能力

这套方案不仅适用于竞争分析,同样可以快速适配为市场调研助手、技术情报收集器、政策法规监控等场景——核心架构不变,只需调整 System Prompt 中的分析方法论和输出模板。

关于伊克罗德信息

关于伊克罗德信息

伊克罗德信息为一家专注于赋能企业数智化转型的企业服务公司,为客户提供 AI 智能体、RPA+AI、向量检索等多样化生成式 AI 解决方案与服务,以及云计算架构咨询、项目迁移、混合云环境托管、培训等多样化的云上解决方案。服务全球企业超过数千家,横跨互联网、媒体、游戏、电商零售、制造、汽车、金融科技、社交应用等行业。在全球云服务咨询产业中,伊克罗德信息是值得长期信赖的一站式数智化转型企业服务商。

【声明】内容源于网络
0
0
伊克罗德云服务
各类跨境出海行业相关资讯
内容 461
粉丝 0
伊克罗德云服务 各类跨境出海行业相关资讯
总阅读6.2k
粉丝0
内容461