Upgrade to Pro — share decks privately, control downloads, hide ads and more …

(続)生成AIによる 静的解析ツールの自動生成

tenntenn - Takuya Ueda
November 07, 2024
7

(続)生成AIによる 静的解析ツールの自動生成

tenntenn - Takuya Ueda

November 07, 2024
Tweet

More Decks by tenntenn - Takuya Ueda

Transcript

  1. The Go gopher was designed by Renée French. The gopher

    stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. (続)生成 AIによる 静的解析ツールの自動生成 2024/10/24 tenntenn.go #7 - 静的解析ナイト
  2. UEDA Takuya / tenntenn 上田拓 也 newmo株式会社 / ソフトウェアエンジニア 一般社団法人

    Gophers Japan 代表理事 Google Developers Expert (GDE) / Go Category tenntenn Conference 主催・登壇者 2013年よりGo Conferenceの運営を行う。 
 2016年、メルカリグループに入社、Goコミュニティへの貢献や採用・社内教育などに従事。 
 2021年、一般社団法人Gophers Japan設立、代表理事に就任。Google Developers Expert (GDE)に選出。 
 2022年、株式会社ナレッジワーク入社。ソフトウェアエンジニアおよびGoエンジニアのイネーブルメントに従事。 
 2024年、newmo株式会社入社。ソフトウェアエンジニアとしてプロダクト開発に従事。 
 略歴
  3. GoからOpenAIのAPIを呼び出す サードパーティ製のライブラリを利用 github.com/sashabaranov/go-openai APIキーを渡すことで簡単にAPIを呼び出せる client := openai.NewClient("API Key") resp, err

    := client.CreateChatCompletion(ctx, openai.ChatCompletionRequest{ Model: openai.GPT3Dot5Turbo, Messages: []openai.ChatCompletionMessage{{ Role: openai.ChatMessageRoleUser, Content: "Hello!", }}, }, ) if err != nil { /* 略 */ } fmt.Println(resp.Choices[0].Message.Content)
  4. テストデータを与えて生成する ▪ analysistestでテストする前提のデータを渡す • テストが通るようなコードを生成してもらう • エッジケースも指定する package a import

    "log" // The tool can find function callings of log.Fatal. func f() { log.Fatal("error") // want "NG" fatal := log.Fatal fatal("error") // want "NG" println() // OK }
  5. 今後の展望 ▪ GeminiとかGemmaを使ってみる • GDEなので • 無料で試してもらえるように ▪ GenKit for

    Goを使ってみる • 何者かもわかってないので調べるところから ▪ 本格的にskeletonに取り込む • 提供方法を考える