# プロジェクト概要
社内の情報を使ってChatGptを使うための社内ツールプロジェクト(バックエンドは自分一人)。ChatGptに直接リクエストを送ると学習データとして使われてしまうが、OpenAIが用意したAPI経由であれば学習データとしては利用されないため、このプロダクトを作ることになった。「社内ツールのため、もし失敗しても許容できるから」ということで許可を受け、技術選定から担当した。
# 取り組んだ課題
ChatGptからストリーミングで送られてくるレスポンスをフロント側にそのまま送信しつつ、その一方でストリーミングのレスポンスを一つのデータとしてまとめてDBに保存する必要があった。
# 取り組みの成果
ストリーミングで送られてくるレスポンスをSever-Sent Eventsでフロント側にそのまま送信しつつ、Goroutineを用いた並行処理により、パフォーマンスを失わずにchatgptからのレスポンスをdbに保存できるようにした
詳細は以下。
・工数見積もり/開発スケジューリング
・
・アーキテクチャ設計(Clean Architecture)
・テーブル設計(ER図) ・
・FW(Gin)を用い、ルーターやエラーハンドリングなどのミドルウェアを作成
・ORM(SQLBoiler)とマイグレーションツール(Goose)導入
・golangci-lintを設定

・ロギングはzap
・業準ライブラリのnet/httpを用い、chatgptにリクエストを送り、ストリーミングで送られてくるレスポンスをSever-Sent Eventsでフロント側にそのまま送 信する機能
・Goroutineを用いた並行処理により、パフォーマンスを失わずにchatgptから のレスポンスをdbに保存する機能
・chatgpt同等のUIを実現するため、スレッドやメッセージのCrud処理を実装
・認証機能を実装