让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验?

让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验?

起因

Sakurairo 主题支持了基于 ChatGPT 的 AI 摘要功能,我有点眼红,但是因为那是个主题限定功能,而我用的又是 Argon,遂想着让 Argon 也支持 AI 摘要功能。

截至目前,此功能已经合并到了 argon-theme 主仓库的 dev 分支,pr 现场可参见:#607

开发

和 Sakurairo 相同,我采用了 haozi-team/chatgpt-php 库以对接 OpenAI 接口(顺便给 Argon 添加了 Compose 支持) 。

接下来,在 settings.php 和 inc/fun/post-extra-meta-editor.php 添加了全局和文章单独设置,以允许用户配置 OpenAI 地址,密钥,以及是否需要使用 AI 摘要功能。

最后,在 inc/fun/post.php 和 template-parts/entry/excerpt.php 添加页面样式,就完成了开发。

有关 ChatGPT 部分的核心代码如下:

<?phpuse GuzzleHttp\Exception\GuzzleException;
use HaoZiTeam\ChatGPT\V2 as ChatGPTV2;function argon_generate_chatgpt_client(): ?ChatGPTV2 {$apikey  = get_option( "argon_openai_api_key" );$baseurl = $GLOBALS["openai_baseurl"];if ( ! $apikey || ! isset( $baseurl ) ) {return null;}return new ChatGPTV2( $apikey, $baseurl , model: get_option('argon_ai_model', 'gpt-3.5-turbo'), timeout: 30 );
}/*** @throws Exception|GuzzleException*/
function argon_generate_article_summary( int $post_id, WP_Post $post ): string {$client = argon_generate_chatgpt_client();$client->addMessage("You are an article summary generator, "."please generate the summary of the given article "."with provided title and content, "."the language of the summary must equals to the article's mainly used language, "."do not write summary in third person."."system" );$client->addMessage( "The title of the article:" . $post->post_title );$content = $post->post_content;$content = wp_strip_all_tags(apply_filters('the_content', $content));$max_content_length = get_option( 'argon_ai_max_content_length', 4000 );if ($max_content_length > 0){$content = substr($content, 0, $max_content_length);}$client->addMessage( "The content of the article:" . $content );$previous_summary = get_post_meta( $post_id, "argon_ai_summary", true );if ( $previous_summary != "" ) {$client->addMessage( "The previous summary of the article, please generate the summary similar with the previous one: " . $previous_summary);}$post_argon_ai_extra_prompt_mode = get_post_meta( $post_id, "argon_ai_extra_prompt_mode", true );$post_argon_ai_extra_prompt      = get_post_meta( $post_id, "argon_ai_extra_prompt", true );$global_argon_ai_extra_prompt    = get_option( 'argon_ai_extra_prompt', "" );switch ( $post_argon_ai_extra_prompt_mode ) {case 'replace':$client->addMessage( $post_argon_ai_extra_prompt, 'system' );break;case 'append':$client->addMessage( $global_argon_ai_extra_prompt . $post_argon_ai_extra_prompt, 'system' );break;case 'none':break;case 'default':default:$client->addMessage( $global_argon_ai_extra_prompt, 'system' );break;}$result = "";foreach ( $client->ask( "Now please generate the summary of the article given before" ) as $item ) {$result .= $item['answer'];}return $result;
}function argon_on_save_post( int $post_id, WP_Post $post, string $old_status ): void {
// if ( false !== wp_is_post_autosave( $post_id ) || 'auto-draft' == $post->post_status ) {
//  return;
// }// If this is a revision, get real post ID.$revision_id = wp_is_post_revision( $post_id );if ( false !== $revision_id ) {$post_id = $revision_id;}if ( get_option( 'argon_ai_post_summary', false ) == 'false' || get_post_meta( $post_id, "argon_ai_post_summary", true ) == 'false' ) {return;}$update                                 = $old_status === $post->post_status;$post_argon_ai_no_update_post_summary   = get_post_meta( $post_id, "argon_ai_no_update_post_summary", true );$global_argon_ai_no_update_post_summary = get_option( 'argon_ai_no_update_post_summary', true );if ( $update && $post_argon_ai_no_update_post_summary != 'false' && ( $post_argon_ai_no_update_post_summary == 'true' || $global_argon_ai_no_update_post_summary == 'true' ) ) {return;}if ( get_option( 'argon_ai_async_generate', true ) != 'false' ) {wp_schedule_single_event( time() + 1, 'argon_update_ai_post_meta', array( $post_id ) );} else {argon_update_ai_post_meta( $post_id );}
}function argon_update_ai_post_meta( $post_id ): void {try {$summary = argon_generate_article_summary( $post_id, get_post( $post_id ) );update_post_meta( $post_id, "argon_ai_summary", $summary );} catch ( Exception|GuzzleException $e ) {error_log( $e );}
}add_action( "argon_update_ai_post_meta", "argon_update_ai_post_meta" );
add_action( "publish_post", "argon_on_save_post", 20, 3 );

成品

 

 

总体来说,是非常满足我的需求的,用起来也很方便。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30346.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT专业应用:生成立论稿

正文共 1107 字&#xff0c;阅读大约需要 7 分钟 辩论赛选手必备技巧&#xff0c;您将在7分钟后获得以下超能力&#xff1a; 生成立论稿 Beezy评级 &#xff1a;A级 *经过寻找和一段时间的学习&#xff0c;一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim 编辑者…

马斯克将起诉微软,称其使用 Twitter 数据“非法”训练GPT,吃瓜网友:事情变得更有趣了!...

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 第一时间获取价值内容 整理 &#xff5c; Tina 北京时间 4 月 20 日早间消息&#xff0c;埃隆马斯克表示将对微软提起“诉讼”&#xff0c;理由是微软使用 Twitter 数据“非法”训练其产品。 今天早些时候微软宣布…

Imported target “dart“ includes non-existent path 笔记

详细问题&#xff1a; 关联功能包&#xff0c;源码编译 Failed <<< gazebo_ros2_control [11.8s, exited with code 1] 网上查了很多资料&#xff0c;都是比较旧版&#xff0c;这里注意由于ROS2系统发展很快&#xff0c;功能包在快速集成。 使用源码编译可能会遇到环境…

Spring Boot 3.1.0 发布,添加大量新功能和改进

来源&#xff1a;JAVA架构日记 Spring Boot 3.1.0 现已发布&#xff0c;此版本添加了大量新功能和改进。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.0</v…

拒绝白嫖!马斯克将起诉微软,称其使用 Twitter 数据“非法”训练GPT

来源&#xff1a;InfoQ、整理&#xff1a;Tina 北京时间 4 月 20 日早间消息&#xff0c;埃隆马斯克表示将对微软提起“诉讼”&#xff0c;理由是微软使用 Twitter 数据“非法”训练其产品。 今天早些时候微软宣布将停止在其智能广告平台上支持 Twitter&#xff0c;马斯克此举…

【GPT4技术揭秘】GPT-4 Architecture,Infrastructure,Training Dataset,Costs,Vision,MoE

本文是对《GPT-4 Architecture,Infrastructure,Training Dataset, Costs, Vision, MoE 》的中文翻译。介绍了GPT-4使用的相关技术&#xff0c;希望对大家有一些帮助。群友分享了总结内容如下&#xff1a; 13T tokens预训练语料 &#xff08;llama和palm是1.4T&#xff09;MoE&…

3 分钟为英语学习神器 Anki 部署一个专属同步服务器

原文链接&#xff1a;https://icloudnative.io/posts/anki-sync-server/ Anki 介绍 Anki 是一个辅助记忆软件&#xff0c;其本质是一个卡片排序工具--即依据使用者对卡片上的自定义内容进行主动测试、自我评判后&#xff0c;其内部算法根据评判结果更改每张卡片下次测试时间的…

chatgpt赋能python:Python中的{:>8}

Python中的 {:>8} 介绍 在Python中&#xff0c;{:>8}是一个字符串格式化的方法&#xff0c;它的作用是将字符串向右对齐&#xff0c;并在字符串左侧填充指定字符。这个方法非常有用&#xff0c;尤其是在需要对齐输出结果或者生成格式化的文本时。 这个方法在Python中非…

Heartbeat安装

安装Heartbeat前的准备 Heartbeat集群必须的硬件 从下图看出&#xff0c;构建一个Heartbeat集群系统必须的硬件设备有&#xff1a; 节点服务器&#xff1b; 网络和网卡&#xff1b; 共享磁盘。 节点服务器 安装Heartbeat至少需要两台主机&#xff0c;并且对主机的要求不高&…

ansible企业级实战(Markdown)

ansible经典实战 一、配置文件解释二、实战2.1 脚本分发 && 使用copy生成新文件2.2 列出所有被管理主机list2.3 基于key验证来避免每次输入密码2.3.1 机器密码不一样的解决方案 2.4 fetch 抓取被控制端的文件2.4.1 fetch 如何抓取多个文件&#xff1f; 2.5 file 模块设…

【Python】词云之 wordcloud库 全解析

有用的话&#xff0c;欢迎姗莲✨✨✨✨✨✨✨✨✨✨✨✨✨ 目录 一基础用法二、WordCloud类 形参说明2.1 常用参数2.11 字体 font_path2.12 画布尺寸 width、hight2.13 比例&#xff08;缩放&#xff09;scale2.14 颜色(表) colormap2.15 颜色函数 color_func2.16 词语组合频率…

【云炬COMSOL模型】自己做的激光超声的COSMOL模型

模拟结果 表面温度 等值线 表面应力 模型设置 全局定义 几何 材料 固体传热物理场 固体力学物理场 多物理场 网格 研究&计算日志 2e-06 - out- 1.43e-06 - out- 1.44e-06 - out- 1.45e-06 - out- 1.46e-06 …

uniapp生成商品分享海报

uniapp用canvas生成一个分享商品的海报 文章目录 前言一、展示效果二、使用步骤1.HTML部分2.CSS部分3.JS部分 总结 前言 uniapp用canvas生成一个分享商品的海报&#xff0c;因为用到了uni.downloadFile这个API&#xff0c;所以要注意图片在H5端跨域的问题。 以下是本篇文章正…

postman错误提示“Current request is not a multipart request”

今天在写业务进行批量上传文件时&#xff0c;用postman测试发现报500错误----Current request is not a multipart request&#xff0c;翻译了一下大概意思是 当前请求不是多部分请求&#xff0c;所以就很纳闷。今天特意记录一下 首先我们上传文件时&#xff0c;在postman里面…

如何为豆瓣FM写一个chrome的歌词插件

对于喜欢豆瓣FM的同学来说&#xff0c;没有歌词是件令人苦恼的事&#xff0c;下面我就来总结下怎样为豆瓣FM写一个chrome的歌词插件。 --------------------------------- 1.需要的技能 首先&#xff0c;你要会javascript&#xff0c;其次你要掌握一点chrome的hack&#xff…

设计师解放双手之作!3秒生成风景园林效果图,AIGC赋能景观设计

项目简介 在过去几十年&#xff0c;风景园林经历了从“刀耕火种”的完全手绘设计时代到当下比较流行的参数化设计时代&#xff0c;过去的每一轮技术革新都让风景园林作品的表现形式产生了巨大的改变。随着计算机图像技术的发展&#xff0c;我们有更多的建模和渲染软件辅助提升图…

有哪些中西合璧的建筑设计?

所谓中西合璧&#xff0c;中即中华文化&#xff0c;体系繁多&#xff0c;源远流长&#xff0c;浩如烟海&#xff0c;是世界三大文化体系之一&#xff0c;在历史上曾是东亚文化的中心&#xff0c;一度影响欧洲&#xff1b;西即西方文化&#xff0c;西方物质文明和精神文明&#…

独家 | ChatGPT可以解决分级和分类这样的简单机器学习任务

作者&#xff1a;Damir Yalalov 翻译&#xff1a;陈超 校对&#xff1a;赵茹萱本文约1100字&#xff0c;建议阅读5分钟 本文介绍了ChatGPT如何解决简单的机器学习任务并给出了鸢尾花分类和城市预测两个案例。 一句话概括&#xff1a; ChatGPT可以帮助你完成简单的机器学习任务…

决定AI大模型胜负的关键:解读数据在未来竞争中的角色

随着人工智能的迅猛发展&#xff0c;高质量数据的重要性已愈发明显。以大型语言模型为例&#xff0c;近年来的飞跃式进展在很大程度上依赖于高质量和丰富的训练数据集。相比于GPT-2&#xff0c;GPT-3在模型架构上的改变微乎其微&#xff0c;更大的精力是投入到了收集更大、更高…

RWKV 语言模型:具有 Transformer 优点的 RNN

RWKV 语言模型&#xff0c;这是一个具有巨大潜力的开源大型语言模型。由于 ChatGPT 和一般的大型语言模型最近受到了很多关注。在这篇文章中&#xff0c;我将尝试解释与大多数语言模型&#xff08;transformer&#xff09;相比&#xff0c;RWKV 有何特别之处。 RWKV 可视化 浅谈…