构建由人工智能 CompetiAI 驱动的竞争情报工具

2025-06-10

构建由人工智能驱动的竞争情报工具

CompetiAI

现在每个做生意的人都有竞争对手,而且随着技术的发展,保持竞争优势不仅重要,而且至关重要。

为此,许多公司开始使用竞争情报 (CI)工具,这些工具可以帮助追踪竞争对手的活动、产品、市场变化以及客户行为和情绪。在人工智能的支持下,这些工具更进一步,能够分析数据并将其转化为切实可行的洞察,帮助企业做出更明智的决策,保持竞争优势。

人工智能增强型持续集成 (CI) 工具不仅能观察趋势,还能帮助企业更深入地了解行业动态,而且通常是实时的。借助这些工具,企业可以主动适应变化,应对竞争对手的动向,甚至在新机遇广为人知之前就发现它们。事实上,持续集成不仅适用于大型企业,它也能为小型企业创造公平的竞争环境,使它们能够做出与大型企业一样明智的数据驱动型决策。

竞争情报为何重要

竞争情报 (CI) 不仅仅是关注竞争对手的动态,更是获取宝贵的洞察,指导您的业务决策。无论您是调整定价策略、优化信息传递、优化价值主张,还是开发新产品,CI 都能为您提供做出明智选择所需的数据。但它的意义不仅仅在于收集信息,更在于有效地利用这些信息,保持领先地位。

AI 驱动的 CI 工具可以解决的三大关键问题

以下是 AI 驱动的 CI 工具可以解决的一些关键问题:

有了这些优势,很明显,将竞争情报工具集成到您的业务中不再是可选的,而是必不可少的。

如何使用 Python 构建竞争情报工具

现在我们了解了竞争情报的价值,让我们深入了解如何构建自己的人工智能竞争情报工具

我们将使用以下工具:

  • Python
  • 朗链
  • Ollama(本地法学硕士)
  • 光明数据
  • Streamlit

步骤1:设置Python环境

首先,设置 Python 环境。然后,在项目的根文件夹中,创建一个名为 的文件requirements.txt。将以下依赖项复制并粘贴到该文件中:

streamlit 
langchain 
langchain_ollama
selenium
beautifulsoup4
lxml 
html5lib
python-dotenv
Enter fullscreen mode Exit fullscreen mode

接下来,通过运行以下命令激活您的环境:

./name_of_environment/Scripts/Activate
Enter fullscreen mode Exit fullscreen mode

然后,通过运行以下命令一次性安装所有依赖项:

pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

第 2 步:Streamlit UI

main.py在根文件夹中创建一个名为 的 Python 文件。在此文件中,我们将构建一个简单的 Streamlit 用户界面。

Streamlit 是一款极其简单的工具,可用于以极少的代码创建基于 Python 的 Web 应用程序。它是与大型语言模型 (LLM) 等工具交互的最简单方法之一,我们将在本教程中使用这些工具。

以下是设置界面的代码:

import streamlit as st

st.title("Competitive Intelligence Tool (Demo)")
url = st.text_input("Enter Competitor's Website URL")

if st.button("Gather Insights"):
    if url:
        st.write("Analyzing the website...")
Enter fullscreen mode Exit fullscreen mode

要运行 Streamlit 应用程序,请打开终端,激活虚拟环境(如果尚未激活),然后键入以下命令,指定包含 Streamlit 应用程序的 Python 文件的名称(main.py在本例中为):

streamlit run main.py
Enter fullscreen mode Exit fullscreen mode

它将打开一个包含该应用程序的网络服务器。

Streamlit Web 服务器
构建好 Streamlit UI 后,下一步就是从我们想要抓取的网站实际抓取数据。为此,我们将使用一个名为Selenium的 Python 模块。

Selenium 允许我们自动化 Web 浏览器,因此我们实际上可以导航到网页,抓取该页面上的所有内容,然后对内容进行一些过滤,然后将其传递到 ChatGPT 或 Gemini 等 LLM,然后我们可以使用该 LLM 解析数据并给出有意义的响应。

步骤 3:设置 Bright Data

明亮的数据仪表板

Bright Data 是一个网络数据平台,它使企业能够收集和构建任何公共网络数据,并且由于广泛的代理网络,可以从任何位置准确地查看网络,而不会受到阻止或误导。

对于本教程,您可以完全免费使用它们。

单击此处创建帐户。

之后,转到您的仪表板并创建一个名为Scraping Browser 的工具的新实例/区域。

创建抓取浏览器

这款抓取浏览器内置验证码解析器,并连接到代理网络。这意味着它会自动提供你的新 IP 地址,并循环使用这些 IP 地址,模拟你作为真实用户访问网站。

这也意味着如果有验证码,它会自动为您解决,因此您无需处理被验证码阻止的问题。

因此,输入区域名称并创建它。

图片描述

然后单击“确定”

Bright Data 对于开发人员来说的一个主要优势是,它只适用于您已有的代码。

在本例中,我们使用的是 Selenium。因此,只需复制 URL

图片描述

然后在根目录中创建一个.env文件并粘贴 URL:

SBR_WEBDRIVER="paste_the_url_here"
Enter fullscreen mode Exit fullscreen mode

步骤4:Web抓取组件

接下来,创建一个名为 的新文件scrape.py。我们将在这里编写网页抓取功能,并将其与主文件分开,以便于我们导航。

首先,将一些 selenium 模块导入到您的scrape.py文件中,然后编写一个函数,该函数获取网站的域名,抓取网页的所有内容,清理它,然后返回所有内容。

from selenium.webdriver import Remote, ChromeOptions
from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
from bs4 import BeautifulSoup
from dotenv import load_dotenv
import os

load_dotenv()

SBR_WEBDRIVER = os.getenv("SBR_WEBDRIVER")

def scrape_website(website):
    print("Connecting to Scraping Browser...")
    sbr_connection = ChromiumRemoteConnection(SBR_WEBDRIVER, "goog", "chrome")
    with Remote(sbr_connection, options=ChromeOptions()) as driver:
        driver.get(website)
        print("Waiting captcha to solve...")
        solve_res = driver.execute(
            "executeCdpCommand",
            {
                "cmd": "Captcha.waitForSolve",
                "params": {"detectTimeout": 10000},
            },
        )
        print("Captcha solve status:", solve_res["value"]["status"])
        print("Navigated! Scraping page content...")
        html = driver.page_source
        return html


def extract_body_content(html_content):
    soup = BeautifulSoup(html_content, "html.parser")
    body_content = soup.body
    if body_content:
        return str(body_content)
    return ""


def clean_body_content(body_content):
    soup = BeautifulSoup(body_content, "html.parser")

    for script_or_style in soup(["script", "style"]):
        script_or_style.extract()

    # Get text or further process the content
    cleaned_content = soup.get_text(separator="\n")
    cleaned_content = "\n".join(
        line.strip() for line in cleaned_content.splitlines() if line.strip()
    )

    return cleaned_content


def split_dom_content(dom_content, max_length=6000):
    return [
        dom_content[i : i + max_length] for i in range(0, len(dom_content), max_length)
    ]
Enter fullscreen mode Exit fullscreen mode

步骤 5:设置 Ollama LLM

创建一个名为 的新文件parse.py。然后复制并粘贴下面的代码,然后我们将在本地设置 Ollama,用于执行 LLM。

from langchain_ollama import OllamaLLM
from langchain_core.prompts import ChatPromptTemplate

template = (
    "You are tasked with extracting or generating specific information based on the following text content: {dom_content}. "
    "Please follow these instructions carefully:\n\n"
    "1. **Follow Instructions:** Perform the task as described here: {parse_description}.\n"
    "2. **Precise Output:** Provide the most concise and accurate response possible.\n"
    "3. **No Additional Text:** Do not include extra comments, explanations, or unrelated information in your response."
)

model = OllamaLLM(model="llama3.2")

def parse_with_ollama(dom_chunks, parse_description):
    """
    Handles a variety of tasks based on the provided parse_description.
    Parameters:
        - dom_chunks (list of str): Chunks of text content to process.
        - parse_description (str): Instruction for the task (e.g., "Find competitors", "Summarize product").
    Returns:
        - str: Combined result of all tasks across chunks.
    """
    prompt = ChatPromptTemplate.from_template(template)
    chain = prompt | model

    parsed_results = []
    for i, chunk in enumerate(dom_chunks, start=1):
        response = chain.invoke(
            {"dom_content": chunk, "parse_description": parse_description}
        )
        print(f"Processed batch {i}: {response}")
        parsed_results.append(response)

    return "\n".join(parsed_results)
Enter fullscreen mode Exit fullscreen mode

Ollama 允许您在计算机上本地运行开源 LLM。因此,您无需依赖 API 令牌之类的工具,而且它完全免费。

要开始使用 Ollama,请访问此链接:https://ollama.com/download

下载并安装 Ollama 后,打开终端或命令提示符并输入 Ollama 命令:

ollama
Enter fullscreen mode Exit fullscreen mode

你会得到类似这样的结果:

图片描述

接下来,你需要拉取一个 Ollama 模型。你需要先将 Ollama 模型下载到本地,然后才能执行你的代码。

为此,请访问https://github.com/ollama/ollama

在这里您将看到所有可以使用的不同模型。

图片描述

根据你的电脑配置选择合适的型号。本教程使用Llama 3.2型号。它只需要 3 GB 的内存。

接下来,返回终端或命令提示符并运行以下命令:

ollama pull llama 3.2
Enter fullscreen mode Exit fullscreen mode

然后,系统会将模型下载到您的电脑上。下载完成后,您就可以在parse.py文件中使用该模型了。

步骤 6:测试您的工具

现在您可以使用以下命令继续运行代码:

streamlit run main.py
Enter fullscreen mode Exit fullscreen mode

一切就绪。

您可以继续随意修改代码,使其能够同时从多个 URL 或多个域获取数据。

使用pandas.pydata.orgmatplotlib.org添加数据可视化,使其对您的业务具有可操作性

甚至可以自动化数据收集流程,定期跟踪竞争对手的动态。使用cron 作业或 Python 的计划模块,按定义的时间间隔运行数据抓取和分析脚本。

要查看完整代码,请查看 GitHub 仓库:

GitHub 徽标 竞赛/比赛

人工智能驱动的竞争情报工具

CompetiAI

人工智能驱动的竞争情报工具






结论

为您的企业或产品构建竞争情报工具潜力巨大。通过结合网页抓取和文本分析,您可以创建一个工具,帮助您在竞争中保持领先地位,并做出更明智的决策。

这可以显著改善您的产品开发营销策略销售拓展整体市场知名度

这些工具提供的竞争优势是无价的,尤其是在瞬息万变、竞争激烈的行业。随着人工智能和机器学习的进步,您可以期待更先进的功能,从预测分析到实时市场警报。

如果您正在考虑构建 CI 工具,那么从这样的项目入手是获得实践经验的绝佳途径。随着您发现新方法可以为您的业务运营增值,您可以不断尝试、迭代和改进该工具。

对本教程有任何想法或反馈吗?请在下方评论区分享,或随时与我联系。我很乐意听听您如何利用竞争情报来转型您的业务!

鏂囩珷鏉ユ簮锛�https://dev.to/sholajgede/build-a-competitive-intelligence-tool-powered-by-ai-1nd1
PREV
Convex 和 Kinde 开始使用
NEXT
Ansible 入门 - 初学者指南:50 天 DevOps 工具系列第 30 天