当前位置: 首页 > news >正文

【NLP 66、实践 ⑰ 基于Agent + Prompt Engineering文章阅读】

你用什么擦干我的眼泪

莎士比亚全集

工业纸巾

还是你同样泛红的眼睛

                                —— 4.19

一、⭐【核心函数】定义大模型调用函数 call_large_model

prompt:用户传入的提示词(如 “请分析这篇作文的主题”),指导模型执行任务

client:ZhipuAI客户端实例,用于发起 API 请求,api_key需从智谱 AI 官网申请

model:指定使用智谱 AI 的glm-3-turbo模型(支持对话式交互)。

messages:输入格式为列表,每个元素是包含role(角色,此处为user)和content(内容,即prompt)的字典,符合智谱 AI 对话模型的输入规范。

response:模型返回的原始响应。

response_text:提取第一个生成结果的文本内容。

ZhipuAI():初始化智谱 AI(ZhipuAI)的客户端实例,用于与智谱 AI 的大模型服务进行交互,支持调用模型 API 发送请求并获取响应。

参数名类型是否必填默认值描述
api_key字符串智谱 AI 的 API 密钥,用于身份验证(需从智谱 AI 官网申请,示例中为占位符)

chat.completions.create():调用智谱 AI 的大模型(如glm-3-turbo)生成响应,支持对话式交互,传入对话历史和提示词,获取模型的文本生成结果。

参数名类型是否必填默认值描述
model字符串指定使用的模型名称(如glm-3-turbo
messages列表 [字典]对话历史列表,每个元素包含role(角色)和content(内容)
temperature浮点型0.7控制生成文本的随机性(值越高越随机,范围:0-1)
max_tokens整数1000生成文本的最大 tokens 数(控制输出长度)
top_p浮点型1.0核采样参数,与temperature共同控制随机性
def call_large_model(prompt):client = ZhipuAI(api_key="填写你自己的智谱API")response = client.chat.completions.create(model="glm-3-turbo",messages=[{"role": "user", "content": prompt}])response_text = response.choices[0].message.contentreturn response_text

二、主题分析函数 language_optimization_agent

article_text:待分析的文章内容(从文件读取或用户输入)

prompt_analysis:提示词拼接结果,格式为 “请分析这篇作文的主题:[文章内容]”,明确告知模型任务是提取文章主题。

language_optimization_suggestions:模型生成的主题描述(如 “文章主题是:人与宠物的温情陪伴”)

call_large_model():大模型调用

def language_optimization_agent(article_text):prompt_analysis = "请分析这篇作文的主题:" + article_textlanguage_optimization_suggestions = call_large_model(prompt_analysis)return language_optimization_suggestions

三、定义内容丰富函数 content_enrichment_agent

article_text:待分析的文章内容(从文件读取或用户输入)

theme_analysis_result:通过language_optimization_agent得到的主题分析结果(如 “宠物陪伴与成长”)。

prompt_content:提示词结构为 “根据主题 [主题结果],提出可扩展的内容点 [文章内容]”,引导模型结合主题给出具体扩展方向(如 “增加宠物互动细节”)。

content_enrichment_suggestions:模型生成的内容丰富建议(如 “可补充宠物生病时的照顾细节”)

call_large_model():大模型调用

def content_enrichment_agent(article_text, theme_analysis_result):# 根据文章分析结果构建提示词prompt_content = f"请阅读下面这篇文章,根据主题{theme_analysis_result},为该文章提出可以进一步扩展和丰富的内容点" + article_textcontent_enrichment_suggestions = call_large_model(prompt_content)return content_enrichment_suggestions

四、定义可读性优化函数

article_text:待分析的文章内容(从文件读取或用户输入)

theme_analysis_result:通过language_optimization_agent得到的主题分析结果(如 “宠物陪伴与成长”)。

prompt_readablity:提示词结构为 “根据主题 [主题结果],总结主旨为 30 字以内通俗语言 [文章内容]”,明确任务是简洁概括。

readability_suggestions:模型生成的主旨总结(如 “讲述与金毛宠物大福的相遇、成长及相互陪伴的温暖故事”)。

call_large_model():大模型调用

def readability_agent(article_text, theme_analysis_result):# 根据文章分析结果构建提示词prompt_readability = f"请阅读下面这篇文章,根据主题{theme_analysis_result},将文章主旨大意总结成三十字以内通俗易懂的话:" + article_textreadability_suggestions = call_large_model(prompt_readability)return readability_suggestions

五、定义仿写文章函数 imitate_article_agent

article_text:待分析的文章内容(从文件读取或用户输入)

theme_analysis_result:通过language_optimization_agent得到的主题分析结果(如 “宠物陪伴与成长”)。

prompt_imitate:提示词结构为 “根据主题 [主题结果],仿写同主题文章 [文章内容]”,引导模型模仿原文风格和主题生成新内容。

imitate_article_suggestions: 模型生成的仿写文章(如以其他宠物为对象,重复 “相遇 - 成长 - 陪伴” 的叙事结构)。

call_large_model():大模型调用

def imitate_article_agent(article_text, theme_analysis_result):# 根据文章分析结果构建提示词prompt_imitate = f"请阅读下面这篇文章,根据主题{theme_analysis_result},请参照同样主题仿写一篇相似的文章:" + article_textimitate_article_suggestions = call_large_model(prompt_imitate)return imitate_article_suggestions

六、读取文件并调用函数

open():打开一个文件并返回文件对象,用于读取、写入或操作文件内容,支持处理不同编码和模式的文件。

参数名类型是否必填默认值描述
file字符串文件路径(绝对路径或相对路径,如"F:/.../《我的宠物》.txt"
mode字符串"r"打开模式(如"r"只读,"w"写入,"a"追加等)
encoding字符串None文件编码(如"utf-8"处理中文,"gbk"等)
errors字符串None编码错误处理方式(如"ignore"忽略错误)

read():从已打开的文件对象中读取内容,返回字符串(文本文件)或字节数据(二进制文件),支持按指定长度读取。

参数名类型是否必填默认值描述
size整数-1读取的字节数或字符数:
-1(默认):读取全部内容
- 正数:读取指定长度

article: 存储从文本文件中读取的文章内容,作为后续函数(如主题分析、内容丰富)的输入数据,类型为字符串。

with open("F:/人工智能NLP/NLP/HomeWork/demo14.3_Prompt优化+Agent优化文章/《我的宠物》.txt", "r", encoding="utf-8") as file:article = file.read()
print("文章主题是:",language_optimization_agent(article))
print("————————————————————————————————————————————————————————————————————————————————————")
print("文章内容点是:",content_enrichment_agent(article, language_optimization_agent(article)))
print("————————————————————————————————————————————————————————————————————————————————————")
print("文章主旨大意是:",readability_agent(article, language_optimization_agent(article)))
print("————————————————————————————————————————————————————————————————————————————————————")
print("仿写文章是:",imitate_article_agent(article, language_optimization_agent(article)))

七、完整代码

代码运行流程

┌─────────────────────────────┐
│      主程序开始              │
└──────────┬──────────────────┘│├─1. 读取文件│    ├─文件路径: F:/人工智能NLP/.../《我的宠物》.txt│    └─存储内容到变量 `article`│├─2. 执行语言优化分析│    ├─调用 `language_optimization_agent(article)`│    │    ├─构造Prompt: 分析主题│    │    └─调用大模型 → 返回主题结果│    └─打印结果: "文章主题是:{主题}"│├─3. 执行内容扩展分析│    ├─调用 `content_enrichment_agent(article, 主题)`│    │    ├─构造Prompt: 基于主题扩展内容│    │    └─调用大模型 → 返回扩展建议│    └─打印结果: "文章内容点是:{建议}"│├─4. 执行可读性分析│    ├─调用 `readability_agent(article, 主题)`│    │    ├─构造Prompt: 总结主旨(30字内)│    │    └─调用大模型 → 返回摘要│    └─打印结果: "文章主旨大意是:{摘要}"│└─5. 执行仿写分析├─调用 `imitate_article_agent(article, 主题)`│    ├─构造Prompt: 基于主题仿写│    └─调用大模型 → 返回仿写文章└─打印结果: "仿写文章是:{仿写内容}"
from zhipuai import ZhipuAIdef call_large_model(prompt):client = ZhipuAI(api_key="填写你自己的智谱API")response = client.chat.completions.create(model="glm-3-turbo",messages=[{"role": "user", "content": prompt}])response_text = response.choices[0].message.contentreturn response_textdef language_optimization_agent(article_text):prompt_analysis = "请分析这篇作文的主题:" + article_textlanguage_optimization_suggestions = call_large_model(prompt_analysis)return language_optimization_suggestionsdef content_enrichment_agent(article_text, theme_analysis_result):# 根据文章分析结果构建提示词prompt_content = f"请阅读下面这篇文章,根据主题{theme_analysis_result},为该文章提出可以进一步扩展和丰富的内容点" + article_textcontent_enrichment_suggestions = call_large_model(prompt_content)return content_enrichment_suggestionsdef readability_agent(article_text, theme_analysis_result):# 根据文章分析结果构建提示词prompt_readability = f"请阅读下面这篇文章,根据主题{theme_analysis_result},将文章主旨大意总结成三十字以内通俗易懂的话:" + article_textreadability_suggestions = call_large_model(prompt_readability)return readability_suggestionsdef imitate_article_agent(article_text, theme_analysis_result):# 根据文章分析结果构建提示词prompt_imitate = f"请阅读下面这篇文章,根据主题{theme_analysis_result},请参照同样主题仿写一篇相似的文章:" + article_textimitate_article_suggestions = call_large_model(prompt_imitate)return imitate_article_suggestionswith open("F:/人工智能NLP/NLP/HomeWork/demo14.3_Prompt优化+Agent优化文章/《我的宠物》.txt", "r", encoding="utf-8") as file:article = file.read()
print("文章主题是:",language_optimization_agent(article))
print("————————————————————————————————————————————————————————————————————————————————————")
print("文章内容点是:",content_enrichment_agent(article, language_optimization_agent(article)))
print("————————————————————————————————————————————————————————————————————————————————————")
print("文章主旨大意是:",readability_agent(article, language_optimization_agent(article)))
print("————————————————————————————————————————————————————————————————————————————————————")
print("仿写文章是:",imitate_article_agent(article, language_optimization_agent(article)))

相关文章:

  • 你的电脑在开“外卖平台”?——作业管理全解析
  • QML Rectangle 组件
  • 卷积神经网络基础(二)
  • 嵌入式单片机通过ESP8266连接物联网实验
  • 06-libVLC的视频播放器:推流RTMP
  • HCIP --- OSPF综合实验
  • office软件中word里面的编号库和列表库功能
  • 在 Node.js 中使用原生 `http` 模块,获取请求的各个部分:**请求行、请求头、请求体、请求路径、查询字符串** 等内容
  • C# 预定义类型全解析
  • 实验扩充 LED显示4*4键位值
  • 单片机毕业设计选题物联网计算机电气电子类
  • Java使用javacv实现的多种音视频格式播放器
  • Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
  • ReSearch:基于强化学习的大语言模型推理搜索框架
  • JavaSpring 中使用 Redis
  • PostgreSQL 常用客户端工具
  • DataWhale AI春训营 问题汇总
  • Map和Set相关练习
  • 【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识
  • Linux 桌面环境 LXQt 2.2 发布
  • 日媒:日本公明党党首将访华,并携带石破茂亲笔信
  • 护航民营企业出海,上海设37家维权工作站、建立近百人专家团队
  • 哈萨克斯坦一名副市长遭枪击
  • 又一名被拐孩子找到!29年后,在警方帮助下云南男子寻子成功
  • 国家新闻出版署:4月共118款国产网络游戏获批
  • 高架上2名儿童从轿车天窗探出身来,驾驶员被记3分罚200元