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

目錄

發佈留言

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

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

Picture of 賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

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

訂閱電子報

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

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

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

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

訂閱電子報

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