朝日ネット 技術者ブログ

朝日ネットのエンジニアによるリレーブログ。今、自分が一番気になるテーマで書きます。

LibreChatの採用とGPT-4の開放(社内用ChatGPTクローンのアップデート)

朝日ネットで技術部門の執行役員をしている草場です。
前回に引き続き、社内用ChatGPTについての取り組みを紹介します。

前回記事はこちら techblog.asahi-net.co.jp

  • 6月以降のできごと
  • コスト
  • OSS選定(LibreChat選定)
    • Azure OpenAI Serviceでも言語モデルの変更が可能
    • 認証オプション
    • コンフィグでの機能制御
    • メンテナンス・更新頻度
  • システム構成
  • 苦労話
    • Azureでのモデル切替の設定方法
    • Automated Moderation System
    • Google認証
  • 今後について
  • 最後に
  • 付録(.env diff)
続きを読む

オブジェクト指向を5年間理解できなかった人間がオブジェクト指向を説明する(第6回)

こんにちは。朝日ネット社員のjiweenです。

前回までで重要なパターンは説明し終わりました。

最終回となる今回では、初学者にとって必要性が低いと判断し後回しにしていたパターンに触れます。 GoFパターンのマニアでなければ、読み飛ばしていただいても問題ありません。

最後では連載のまとめを行います。

続きを読む

シェルスクリプトとの対比で理解するPythonのsubprocess

はじめに

開発部の ikasat です。

皆さんは git, ssh, rsync のような外部コマンドを呼び出すスクリプトを書きたくなったことはありますか? 個人的にこの類のスクリプトは最初はシェルスクリプトとして書くのですが、改修を重ねるうちに肥大化して処理も複雑になり、 後から Python のような汎用プログラミング言語で書き直すことがよくあります。

外部コマンド呼び出しを書き直す際に、Git 操作のために pygit2、 SSH 接続のために paramiko のようなライブラリをわざわざ使うのは大がかりだったり、 rsync に相当するようなこなれたライブラリが存在しなかったりする場合があります。 そのような時は標準ライブラリの subprocess モジュールを利用し、Python から外部コマンドを呼び出すことになるでしょう。

しかしながら、Python のチュートリアルページには subprocess モジュールの解説はなく、 いきなり標準ライブラリのリファレンスを読むことになります。 subprocess モジュールはバージョンアップに従いAPIが多数追加されており、また各種OSの事情が同じ箇所に記載されているため、一見して利用法をなかなか掴みにくいです。

この記事では対象環境を Linux に絞り、シェルスクリプトと Python スクリプトを対比した上で subprocess モジュールの典型的な利用方法について述べます。 また、記事の後半では subprocess モジュールの詳細に立ち入り、込み入ったケースでの注意点について記載します。

対象読者

  • subprocess を雰囲気で利用している人
    • 具体的には公式のリファレンスや巷の解説記事を多少読んで import subprocess したことがある人
  • はじめに
  • 対象読者
  • 対象環境
  • シェルスクリプトとPythonの比較
    • コマンドを起動する(最も単純な使い方)
    • 終了ステータスを取得する
    • 標準出力を捕捉する
    • 標準入出力をリダイレクトする
    • 標準エラー出力を標準出力にマージして捕捉する
    • 出力を全て捨てる
    • 終了ステータスが0でなければ例外を発生させる
    • Pythonのバイト列・文字列をコマンドに渡す
    • 並行処理を行う
    • Popen と communicate で標準入出力を扱う
    • パイプ処理を行う
    • タイムアウトを設定する
    • シェル経由でコマンドを起動する(要注意)
  • subprocessの詳細仕様と内部実装
    • プロセス間通信の流れ(概要)
    • プロセス間通信の実装(詳細)
    • 子プロセス同士をパイプする際に close が必要な理由
    • Pythonとパイプ書き込みエラー
    • デッドロックと communicate
  • おわりに
  • 採用情報
続きを読む

オブジェクト指向を5年間理解できなかった人間がオブジェクト指向を説明する(第5回)

こんにちは。朝日ネット社員のjiweenです。 今日もデザインパターンを分析します。

今回は、データとその処理を分離して扱うパターンが3つ(Iterator, Visitor, Observer)登場します。ここでは、第2回で説明した「データと振る舞いの一体化は強制されない」ということを思い出してください。どのパターンでもデータと振る舞いが本質的に別の流動性を持っており、そのため自然と分離が起こります。

続きを読む

エンジニアが家庭に浸かって成長した話 ~育児休業体験記~

朝日ネットのエンジニアのxfuzzy(男性)です。 私事ですが、妻が第一子を妊娠・出産し、私も育児休業(育休)を取得しましたので、育休取得の経緯や会社とのやり取りをレポートさせていただきます。

  • 育休制度の概要
  • 育休を取ると決めるまで
  • 育休前
  • 育休取得中
  • 育休後
    • 日々の業務で意識していること
  • まとめ
  • 採用情報
続きを読む