WordPress 自動筆記外掛

目錄

這禮拜花了幾小時實作了一個小外掛,目的是想要結合 OpenAI API 以及 WordPress 的排程功能,自動在每天半夜十二點幫我寫筆記,筆記內容是每天介紹一個 WooCommerce 函式的說明並附上程式碼範例,並帶有該函式的原始說明連結。

會想要做這個外掛的起因是每次寫程式在卡關時,都會查到原來 WordPress/WooCommerce 有這些內建的函式可以使用,如果可以早點知道的話就可以省下很多卡關的時間,因此想讓自己每天可以多認識一個函式,就能多一點解決問題的知識。

相較於 WordPress Code Reference 都有提供函式的具體使用範例,WooCommerce 的文件就少了這一塊,因此想說就可以請 ChatGPT 幫忙寫出這些函式的具體用法,之後就可以整理成程式碼片段來用。

有了這個想法後我就開始實作,OpenAI API 很好接,申請 API Key 用 wp_remote_request() 打不用十分鐘就搞定了,但產出實際內容後才發現原來 ChatGPT 是這麼不受控的傢伙 Orz,程式碼如下:

<?php

/**
 * OpenAI
 */
function get_chatgpt_resp( $keyword ) {
	$body    = array(
		'model'       => 'gpt-3.5-turbo',
		'messages'    => array(
			array(
				'role'    => 'assistant',
				'content' => '介紹' . $keyword . '的用法,格式為函式名稱、函式說明、程式碼範例、註解、參考連結',
			),
		),
		'temperature' => 1.2,
	);
	$body    = wp_json_encode( $body );
	$options = array(
		'method'  => 'POST',
		'timeout' => 120,
		'headers' => array(
			'Content-Type'  => 'application/json',
			'Authorization' => 'Bearer ' . get_option( 'openai_key' ),
		),
		'body'    => $body,
	);

	$response = wp_remote_request( 'https://api.openai.com/v1/chat/completions', $options );

	if ( is_wp_error( $response ) ) {
		$error_message = $response->get_error_message();
	} else {
		$resp    = json_decode( wp_remote_retrieve_body( $response ) );
		$content = $resp->choices[0]->message->content;
		return $content;
	}
}

1. 回答重複的內容

我的提示語是這樣下的:「介紹 WooCommerc 函式的用法,格式為函式名稱、函式說明、程式碼範例、註解、參考連結,使用繁體中文且不要重複」,我希望透過格式名稱去把它回答的內容拆解為陣列,我預期它每一次都會介紹不一樣的函式。

但試了幾次之後發現到 wc_get_product() 出現頻率最高,其次是 wc_get_order(),看來這是網路上大家最常問的兩個函式,理論上我應該可以把它講過的內容再餵給它以避免重複,但又怕一整個使用量爆表,最後還是覺得應該要先把完整的函式列表整理出來,然後隨機選取後請它介紹。

但 WooCommerce Code Reference 的分類方式不太好整理函式列表,而且除了函式外還有類別以及勾點,還好小程丟給我這個網站,剩下的可能就是要手動更新資料:

2. 回答格式不固定

我預期的回答內容會是這樣:

函式名稱:wc_get_products()

函式說明:透過使用 wc_get_products() 函式,可以取得 WooCommerce 後台系統中所有的商品。此函式具有完整的快取支援,可提高程式執行效率,並可用在任何需要儲存商品資料的情境。

程式碼範例:…

雖然得到的格式幾乎都正確,但有時候冒號會變成半形、冒號後面的文字會換行、程式碼沒有用 Markdown 的程式碼語法包住等等,於是我就要不停的根據它回答的格式做內容判斷,因為我想要拿它的函式名稱作為文章標題,格式不固定讓我有點困擾。

3. 回答內容的正確性

最嚴重的問題還是回答內容的正確性時好時壞,我遇過它寫出來的程式碼範例根本就沒有包含它所介紹的函式,或是解釋的說明完全不相關,附上的參考連結也常常 404,更不用說所處可見的簡體中文用字與用法。

實作後我對於使用 OpenAI API 自動寫筆記的想法有點冷卻了,最大原因在於我還是必須要人工去審核產出的結果,除了要先確認範例程式碼可否運作,還要檢查參考連結是否有誤,或是我應該換個想法,坦然接受現階段小雀的能力就是只能產出這樣的內容,反正我的目的是學習,有能力糾正錯誤也是很重要的一環,實際測試一陣子後再看看吧~

文章標籤chatgptopenai

目錄

賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

覺得文章對你有幫助再幫我鼓個掌吧!

相關文章

Gravity Form 取得表單送出資料

WooCommerce 推播通知外掛近期的功能建議是加入支援 Gravity Form 外掛,讓填表者送出資料後可以收到簡訊或是 ...

LearnDash 手動開通課程瀏覽權限

在某些情境下我們需要透過程式碼來開通 LearnDash 的課程瀏覽權限,像是有些免費課程需要填表單才能觀看,或是連續登入 N 日...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2023 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!