395 Views
May 02, 23
スライド概要
ChatGPT Meet-up Osaka vol.1
Developer
OpenAI APIで API Changelogを要約してみた話 ChatGPT Meetup Osaka #1
結論 • OpenAI APIで任意の文章を要約する仕組みが作れる • 日本語以外の文章を和訳することも可能 • 「書いてないこと」をどこまで許容するかが重要
HELLO! ✋ 岡本 秀高 (Hide) • Stripe Developer Advocate • WordCamp Kyoto 2017 • @hidetaka_dev • https://hidetaka.dev
Changelog
• 高頻度の マイナーアップデート • 自動生成なので ほぼ英語 • 社内向けリリースノートで 詳細を把握することが多い
いつ・何が変わったか ざっくり把握したい
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
}
}
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.")
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')
感想 • HTMLタグは残しておく方がよさそう • APIパラメタやサンプルコードは翻訳してほしくない • タグがあることで、解釈が変わるかは要検証
感想 - 2 • 「書いてないこと」をどこまで許容するか • 載ってることを日本語にするだけなら翻訳APIでよい • 「使い所」や「メリット」などに絞れるとGood
Next Step • プロンプトの調整(ハルシネーション対策) • 気になるSaaSのChangelogも喰わせてみる • GPT-4で動かしてみる • 社内でデモ・ディスカッション