部署一个鲜花网络电商的人脉工具(实战+解决AI练中学的问题) | 豆包MarsCode AI刷题

110 阅读5分钟

前言

本次课程是部署一个鲜花网络电商的人脉工具,目的是利用大模型在微博找到一个可以为易速鲜花宣传代言的大V,这个项目可以把之前学到的LangChain的各个知识点串起来,起到了复习和整合的作用。这一次的笔记主要是跟着课程进行实战,并在AI练中学中把项目跑通。

项目构成

这个项目可以分成以下几个组成部分:

  1. 使用LangChain的搜索工具找到与你需要的鲜花名相关的微博大V,并返回UID。
  2. 使用该UID,通过爬虫工具找到该大V的微博公开信息,并以json格式返回。
  3. 移除掉json中无用的html信息,通过LangChain调用LLM,通过LLM的总结整理以及生成功能,根据大V的个人信息,写一篇热情洋溢的介绍型文章,谋求与该大V的合作。
  4. 把LangChain输出解析功能加入进来,让LLM生成可以嵌入提示模板的格式化数据结构。
  5. 添加HTML、CSS,并用Flask创建一个App,在网络上部署及发布这个鲜花电商人脉工具,供市场营销部门的人员使用。

在这五个步骤中,用到了之前学习的提示工程、模型、链、代理、输出解析等。

关键技术

LangChain 中的提示工程、模型(ChatOpenAI)、链(LLMChain)、代理、输出解析;爬虫技术(利用 requests 库、处理 Cookie 等);Flask 框架用于 Web 应用开发;Pydantic 用于数据模型定义和解析。

实现过程

第一步:找到大V: 在这一步中,用到了Tool和Agent,为了进行网络搜索,用到了SerpAPI工具,并且因为SerpAPI工具不能很好地完成这个搜索任务,所以自定义了一个搜索微博的工具:Crawl Google for 微博 page,这个工具用到了SerpAPI的方法。并且因为直接用SerpAPIWrapper()时,返回的是snippet(摘要文字),所以需要重写一下这个方法,改成返回link(URL)。这样就能返回搜索到的大V的UID。

总结流程如下:设置SerpAPI密钥,在主程序 findbigV.py 中导入相关库,通过 LangChain 代理及特定工具(如 CustomSerpAPIWrapper),依据提供的鲜花类型,以模糊搜索方式找到微博中可能感兴趣的大 V 的 UID。

第二步:爬取大V资料: 在主程序findbigV.py中调用 get_data 函数,根据第一步得到的 UID,利用scraping_tool.py爬虫工具(scrape_weibo 函数)爬取大 V 微博公开信息并以 JSON 格式返回。在这一步中,需要注意的是需要使用自己的cookies,不然无法爬取数据。

我用的是edge浏览器,首先用自己的手机号登录微博,然后进入一个用户的主页,点击F12调出浏览器的开发者工具,然后点击网络,再刷新该界面,选择其中一条,点击标头,找到自己的Cookies。Cookies有点长,需要全部复制,然后粘贴到scraping_tool.pyscrape_weibo函数中,替换原代码的cookies。

image.png

第三步:精简信息、生成文章: 因为上一步返回的信息是从html中提取到的,所以除了有用的信息之外,还有一些界面布局信息,比如文字大小颜色等,这些是不需要的的,调用 remove_non_chinese_fields 函数精简这些信息,只保存我们需要的关于这位大V的信息。

对于生成文章,在主程序findbigV.py中调用 generate_letter 函数,这个函数定义在textgen_tool.py中。要设计提示模板(如 letter_template),初始化大模型(ChatOpenAI)和链(LLMChain),然后将第二步处理后的大V信息传入链中运行,生成文案。

第四步:输出解析 上一步我们得到了大模型生成的文案,但是还需要定义输出的格式,才能更好地使用。在parsingTool.pyTextParsing类中定义了解析的格式和转换成字典的格式,如summary、facts、interest、letter。然后创建一个基于Pydantic模型的解析器letter_parser,用于将文本输出解析为特定的结构。最后通过 {format_instructions} 和 partial_variables 参数,我们利用输出解析器增强了这个提示模板,让 LLM 直接返回我们所需要的JSON格式。

第五步:部署人脉工具: 创建 HTML 文件(index.html)用于交互展示,制作 CSS 文件(style.css)美化页面,重构 findbigV.py 封装功能,创建基于 Flask 的 app.py,定义主页路由和处理请求路由,启动 Flask 应用,实现系统部署上线。然后我们就能得到下面的界面:

image.png

只要输入鲜花名,就能搜索到相关的大V,并根据提示模板得到需要的结果,不过这次输入鲜花名通常得不到想要的对应鲜花大V,所以我就输入了迪丽热巴进行一下实验。

可能遇到的问题

  • LangChain 内部组件(如 SerpAPIWrapper)返回结果不符合预期,像返回摘要而非 URL 导致无法正确提炼 UID。
  • 爬虫过程中,Cookie 可能过期,需要重新获取;频繁爬取或大量请求可能导致账号被封禁。
  • 生成的文案可能与鲜花运营意图贴合度不够,需调整提示模板。
  • 定制工具时(如 CustomSerpAPIWrapper),需谨慎修改源代码,可采用继承并重构相关方法的方式。
  • 爬虫获取 Cookie 时要注意操作步骤和其时效性,且使用时要遵循网站规则避免账号问题。
  • 设计提示模板时要充分考虑业务需求,以引导 LLM 生成符合要求的结果,同时利用输出解析器规范结果格式便于后续集成使用。

AI练中学的问题

主要的一个问题就是tools/textgen_tool.py中定义的大模型还是chatgpt3.5,需要改成自己的豆包大模型 llm = ChatOpenAI(model_name=os.environ["LLM_MODELEND"])

其他的可能还会存在依赖库的版本问题,这个就需要多实验几次。