こんにちは。最近は技術負債解消や開発効率向上に携わっているエンジニアの古矢です。 弊社ではキーワード検索エンジンに Elasticsearch を使用しており、システム内部では様々なクエリが発行されています。 Elasticsearch には Painless という Java VM ベ…
こんにちは、Legalscape コンテンツバリューチームでエンジニアをしている清水です。LegalscapeではNode.jsで書かれたサーバーが多く存在するため、ログを読み取る際にNode.jsのスタックトレースを見ることも多いのですが、どうもエラーが起きている箇所が特…
こんにちは。Engineering Managerの小林です。 今日は最近一番使い勝手がいいと思っているterraformのプロジェクト構成を公開します。 dev(development)、stg(staging)、prd(production)の3環境がある想定で進めていきます。 今回の構成で実現したいこ…
Legalscape のしろくまです。 自然数の集合論的定義(フォン・ノイマンの構成)は空集合の公理と無限の公理を利用して 以下のようになります。 0 = ∅ 1 = {0} = {∅} 2 = {0, 1} = {∅, {∅}} 3 = {0, 1, 2} = {∅, {∅}, {∅, {∅}}} ・・・ また加算は S(n) = n ∪…
15分で適格度トレースまで辿りつく強化学習 by @aximov Legalscape の中山大地です。 Legalscape では、Legalscape Night というイベントを開催しています。この記事では、10月の Legalscape Night で LT をしたときに使ったスライドをみながら、社内勉強会…
こんにちは。Engineering Managerの小林です。 Legalscapeでは各種コンテンツの利活用性を高めるために、すべてのコンテンツをHTMLにする取り組みをしており、これを構造化と呼んでいます。 構造化の対象はWebコンテンツに限らず書籍にも及ぶため、PDFもHTML…
3行でまとめる Azure OpenAIとGeminiでは、コンテンツフィルターの挙動が異なり、エラーハンドリングの実装方法も変わってくる Azure OpenAIは400エラーで明確にブロックする場合と200で一部ブロックする場合があり、Geminiは200レスポンスでブロック理由を…
はじめに こんにちは、LegalscapeでAIエンジニア/データサイエンティストをしている富田です。 皆さんは各LLMの本当のコストを測ったことがありますか? 1Mtokenあたり○ドルという料金表は確認されていると思いますが、実は各LLMの日本語に対するトークン効…
Legalscape のしろくまです。 TypeScript の Type System では Nominal な比較が用いられることがあります。 例 class Product { private name: string; } class User { private name: string; } let p = new Product(); let u = new User(); // Type 'User'…