当前位置: 首页 > 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)))

http://www.xdnf.cn/news/34165.html

相关文章:

  • linux socket编程之udp(实现客户端和服务端消息的发送和接收)
  • Springboot+vue3开发项目——热点事件
  • [特殊字符] 高质量 Java 综合题 × 10(附应用场景 + 多知识点考核)
  • Spring Boot常用注解全解析:从入门到实战
  • 洛谷P1120 小木棍
  • 《AI大模型应知应会100篇》第26篇:Chain-of-Thought:引导大模型进行步骤推理
  • 94. 二叉树的中序遍历
  • Simulink中建立交流单项永磁同步电机模型教程
  • python——列表和元组
  • 深入剖析 HashMap:内部结构与性能优化
  • Linux——进程概念
  • 网络开发基础(游戏)之 Socket API
  • [Java EE] Spring 配置 和 日志
  • 代码随想录训练营第35天 || 01背包问题 416. 分割等和子集
  • Vue基础(6)_键盘事件
  • 玛哈特整平机:工业制造中的关键设备
  • Java 动态代理实现
  • Python scikit-learn 机器学习算法实践
  • 【每天一个知识点】模式识别
  • MySQL进阶-存储过程-变量语法结构
  • C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)
  • JZ8P1533 充电型数字可编程控制器
  • 200+短剧出海平台:谁能成为“海外红果”?
  • 电脑端移植至手机平板:攻克难题,仙盟架构显神通——仙盟创梦IDE
  • 2025.04.19-阿里淘天春招算法岗笔试-第二题
  • 在RK3588上使用SRS流媒体服务器
  • kafka集群认证
  • NumPy 核心指南:零基础入门与实践
  • 商标起名换了暗示词,通过初审!
  • 边生成边训练:构建合成数据驱动的在线训练系统设计实战