你用什么擦干我的眼泪
莎士比亚全集
工业纸巾
还是你同样泛红的眼睛
—— 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)))