OpenAI APIでAPI Changelogを要約してみた話

392 Views

May 02, 23

スライド概要

ChatGPT Meet-up Osaka vol.1

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

OpenAI APIで API Changelogを要約してみた話 ChatGPT Meetup Osaka #1

2.

結論 • OpenAI APIで任意の文章を要約する仕組みが作れる • 日本語以外の文章を和訳することも可能 • 「書いてないこと」をどこまで許容するかが重要

3.

HELLO! ✋ 岡本 秀高 (Hide) • Stripe Developer Advocate • WordCamp Kyoto 2017 • @hidetaka_dev • https://hidetaka.dev

4.

Changelog

5.

• 高頻度の マイナーアップデート • 自動生成なので ほぼ英語 • 社内向けリリースノートで 詳細を把握することが多い

6.

いつ・何が変わったか ざっくり把握したい

8.
[beta]
Cloudflare Workers用のAPIラッパー
import { CreateChatCompletionRequest, CreateChatCompletionResponse } from "openai";
import { FetchClient } from "./abstractFetchClient";
export class OpenAI extends FetchClient {
public constructor(apiKey: string) {
super("https://api.openai.com/v1", apiKey)
}
public async createChatCompletion(body: CreateChatCompletionRequest):
Promise<CreateChatCompletionResponse> {
const result = await this._fetch<CreateChatCompletionResponse>(`${this.baseURL}/chat/completions`, {
method: "POST",
body: JSON.stringify(body)
})
return result
}
}

9.
[beta]
Cloudflare KVで要約結果を保存
if (!feed.id || !feed.title || !feed.description) return
const itemId = feed.id
const storeItem = await this.KV.get(itemId)
const date = new Date(feed.title);
const time = date.getTime()
if (isNaN(time)) return
if (storeItem) {
const expireTargetDate = new Date()
// 半年より前なら消す
if (calcMonthDiff(date, expireTargetDate) > -6) {
return
}
// Expireデータを削除する(1から半年ぐらい?)
await this.KV.delete(itemId)
return

}
// Summarize text by openai API
const summary = await this.summarizer.generateSummary(feed.description)
// Save item to the KV
await this.KV.put(itemId, summary || "No summary data.")

10.
[beta]
Discord Webhookで通知
await fetch(this.DISCORD_WEBHOOK_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
content: [
`**${feed.title}のAPIアップデート情報 by ChatGPT**`,

})

})

summary,
feed.link
].filter(Boolean)
.join('\n')

12.

感想 • HTMLタグは残しておく方がよさそう • APIパラメタやサンプルコードは翻訳してほしくない • タグがあることで、解釈が変わるかは要検証

13.

感想 - 2 • 「書いてないこと」をどこまで許容するか • 載ってることを日本語にするだけなら翻訳APIでよい • 「使い所」や「メリット」などに絞れるとGood

14.

Next Step • プロンプトの調整(ハルシネーション対策) • 気になるSaaSのChangelogも喰わせてみる • GPT-4で動かしてみる • 社内でデモ・ディスカッション