gopenai-apiでAudio APIを使えるようにしました

昨日 作った OpenAI のAPI wrapperで Audio API を利用できるようにしました。 公式のAPIではDefaultのformatがjsonになっていますがverbose_jsonにしてあります。 vtt, srt はまだ対応させていません。 長いデータを投げてないのでわからないですがQueue/WorkerではなくREST APIなので処理長いとタイムアウトしちゃいそうな気がするけどそのあたりどうなんだろう? 使用例 package main import ( "fmt" "log" "os" "github.com/ieee0824/gopenai-api/api" "github.com/ieee0824/gopenai-api/config" "github.com/samber/lo" ) func main() { a := api.New(&config.Configuration{ ApiKey: lo.ToPtr("API_KEY"), Organization: lo.ToPtr("ORG_ID"), }) f, err := os.Open("test.mp3") if err != nil { log.Fatalln(err) } result, err := a.AudioTranscriptionsV1(&api.AudioTranscriptionsV1Input{ File: f, Model: lo.ToPtr("whisper-1"), Language: lo.ToPtr("ja"), }) if err !...

3月 3, 2023

GoからOpenAIのgpt-3.5-turboを使ってみた

インストール go get github.com/ieee0824/gopenai-api 内容 次のAPIに対応しています. /v1/models /v1/chat/completions chat apiをGPT 3.5 Turboで実行する例 package main import ( "fmt" "github.com/ieee0824/gopenai-api/api" "github.com/ieee0824/gopenai-api/config" "github.com/samber/lo" ) func main() { a := api.New(&config.Configuration{ ApiKey: lo.ToPtr("api-key"), Organization: lo.ToPtr("organization-id"), }) fmt.Println(a.ChatCompletionsV1(&api.ChatCompletionsV1Input{ Model: lo.ToPtr("gpt-3.5-turbo"), Messages: []api.Message{ { Role: "user", Content: "ChatGPT 3.5のapiの使い方を教えてください", }, }, })) } 制作物 gopenai-api

3月 2, 2023

GridレイアウトをCSSを利用したものに変更しました

先日の記事 で画像をGrid表示する話をしましたが、CSSでできるという話を聞いたので置き換えました。 {{ $size := "200x" }} {{ $mobileSize := "100x100"}} <div class="img-view"> {{ range $idx, $elem := .Params }} {{ $res := resources.GetMatch $elem }} {{ $image := $res.Resize $size }} {{ $imageWebP := $res.Resize (printf "%s %s webp q70" $size) }} {{ $mobileImage := $res.Fit $mobileSize}} {{ $mobileImageWebP := $res.Fit (printf "%s %s webp q70" $mobileSize) }} {{ $imageURL := $image.RelPermalink }} {{ $imageWebPURL := $imageWebP....

2月 27, 2023

WebP対応しました

サムネイルだけですがWebP対応しました。 オリジナルサイズはどうするか悩んでいるところです。 静的配信をしてるのでserverで出し分けるのではなくpicture tagを利用してやっています。 対応差分は次のような感じです。 - <img class="pc" src="{{ $imageURL }}" alt="{{ $elem }}" width="{{ $image.Width }}" height="{{ $image.Height }}"/> - <img class="sp" src="{{ $mobileImageURL }}" alt="{{ $elem }}" width="{{ $mobileImage.Width }}" height="{{ $mobileImage.Height }}"/> + <picture class="pc"> + <source srcset="{{ $imageWebPURL }}" type="image/webp" > + <img src="{{ $imageURL }}" alt="{{ $elem }}" width="{{ $image.Width }}" height="{{ $image.Height }}"/> + </picture> + <picture class="sp"> + <source srcset="{{ $mobileImageWebPURL }}" type="image/webp"> + <img src="{{ $mobileImageURL }}" alt="{{ $elem }}" width="{{ $mobileImage....

2月 26, 2023

狩猟免許の試験を受けてきました

試験の流れ 私の地域では午前中がわな、午後が銃という構成でした。 8時30分に会場到着して視力検査、聴力検査、運動能力検査を行いました。 視力検査はよくあるランドルト環の方向を答えるやつです。 聴力検査は部屋の隅にたった状態で対角線上の位置からアラームを鳴らして聞こえたら手を上げると言うものでした。 運動能力検査は屈伸したり 岸部露伴の準備運動 みたいなことをやりました。 まぁ実際は岸部露伴程は複雑ではないです。 諸々の検査が終わったら次は筆記試験です。 30問の試験で90分時間が用意されてますが見返しを含めても15分もあれば終わると思います。 途中退席も15分からなので答案用紙に穴があくくらい見返したらいいと思います。 筆記試験が終わると筆記試験の合格者が先に発表されます。 このとき不合格の人は次の鳥獣判定と罠の判定、設営に進むことなく終わります。 合格した人は鳥獣の判定、罠の判定、設営を行い終わった人から帰っていきます。

2月 25, 2023

hugoをGitHub actionsでbuildする設定

当ブログはGithub actionsでビルドしたあとサーバーにデプロイするようにしています。 版管理はgitで画像はlfsを利用しています。 テーマは hugo-PaperModを利用しておりsubmoduleになっています。 actionsの設定 ほぼ重要なのはチェックアウト周りだけなので抜粋はチェックアウト周りだけです。 やっていることは lfs を有効にすることと submodule をチェックアウト時に取得することです。 steps: - name: Checkout uses: actions/checkout@v3 with: lfs: true submodules: recursive submodulesと書かずにsubmoduleと書いてしまって小一時間悩んでしまいましたがsが必要です。 submoduleにしてしまった場合次のような警告が出ますがそのまま実行されます。 Unexpected input(s) 'submodule', valid inputs are ['repository', 'ref', 'token', 'ssh-key', 'ssh-known-hosts', 'ssh-strict', 'persist-credentials', 'path', 'clean', 'fetch-depth', 'lfs', 'submodules', 'set-safe-directory', 'github-server-url'] hugo側の設定 大きい画像をshortcodesを利用して変換する場合時間がかかってタイムアウトをする場合があります。 なので私はtimeout: 120sという設定を入れています。 timeoutのフォーマットはGoのtime.ParseDurationの対応しているフォーマットです。

2月 21, 2023

黒斑山へ行きました

長野と群馬の県境あたりにある黒斑山へ登りに来ました。 高峰高原ビジターセンターから登りました。 高峰高原ビジターセンターまではきれいに除雪されており厳冬期の国道438号線よりも断然走行しやすい道でした。 8時頃から登山を開始しました。 登山口はすでに剣山や石鎚山の山頂と同じくらいの標高でさすがという感じでした。 黒斑山は2400mほどの山で四国のどの山よりも標高が高いですが、今日は暖かく快適な登山でした。 むしろ冬山としては暑いほうかもしれないくらいの気温でした。 実際朝の一番寒かった頃時間帯で-3℃下山したときで0℃で山の上でも日向の雪は一部溶けて地面が露出していました。 もともと天気予報的には強風の予報でしたが風もそこまで強くはなく登りやすかったです。 今回は普段登らない山なのでゆっくり歩きました。 車坂峠からトーミーの頭へ行く道は少し急だったりしますが全体的な体力度合い的には剣山と同じくらいだと思います。 クリックで拡大 クリックで拡大 クリックで拡大 クリックで拡大 活動履歴 黒斑山

2月 18, 2023

冬期長野旅行

冬期の長野旅行です。 四国から長野へ行こうと考えたとき直通の公共交通機関がないので移動方法に悩むことになります。 公共交通機関だと多分大阪や名古屋、東京経由のいずれかで行くと思います。 たぶん東京まで飛行機で行って飛行機使うのが楽なのだろうか? 今回私は公共交通機関の選択肢を使わずに自家用車で行きました。 理由は色々寄り道がしやすいのと現地でもフレキシブルに予定を組めるからです。 SAが見えるごとに休憩していたのでおおよそ11時間ほどかかりました。 今回は積雪もなく走行しやすかったです。 車で移動すると雪をかぶった山が見えてきてとてもいいかんじでした。 クリックで拡大 クリックで拡大 クリックで拡大

2月 17, 2023

インフラ移行しました

github pagesを利用していましたが、AWSに移行しました。 理由はEOS E5で扱う画像が多きすぎるためです。 git lfsがgithub pagesで使えないので移行しました。

2月 17, 2023

HugoでGridレイアウトで画像を表示する

HugoでGird配置で画像を表示する shortcodes を実装しました。 先日サンプルで画像を並べたものです。 {{ $size := "200x" }} {{ $mobileSize := "100x100"}} <div class="img-view"> <table> <tbody> {{ range $idx, $elem := .Params }} {{ $res := resources.GetMatch $elem }} {{ $image := $res.Resize $size }} {{ $mobileImage := $res.Fit $mobileSize}} {{ $imageURL := $image.RelPermalink }} {{ $mobileImageURL := $mobileImage.RelPermalink}} {{ if modBool $idx 3 }} <tr> <th> <a href="{{ $res.RelPermalink }}" target="_blank"> <div class="thumb-img"> <img class="pc" src="{{ $imageURL }}" alt="{{ $elem }}" width="{{ $image....

2月 16, 2023