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

发布于:2025-04-20 ⋅ 阅读:(61) ⋅ 点赞:(0)

你用什么擦干我的眼泪

莎士比亚全集

工业纸巾

还是你同样泛红的眼睛

                                —— 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.content
    return response_text

二、主题分析函数 language_optimization_agent

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

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

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

call_large_model():大模型调用

def language_optimization_agent(article_text):
    prompt_analysis = "请分析这篇作文的主题:" + article_text
    language_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_text
    content_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_text
    readability_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_text
    imitate_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 ZhipuAI


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.content
    return response_text


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


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


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

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


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)))


网站公告

今日签到

点亮在社区的每一天
去签到