Home Web Service ChatGPT OpenAI(ChatGPT)のAPIで、意図したJSON形式の出力を確実に得るための設定 @wakairo 2024/08/09 19:04 2024年8月に「Structured Outputs」の機能と設定がOpenAI(ChatGPT)のAPIに導入されました。 この設定を有効にすることで、スキーマで指定したJSON形式の出力を、例外的な場合を除いて、確実に得ることが出来ます。 詳細は以下の記事を参照してください。 OpenAIがJSON出力の際に100%の精度で特定のスキーマに従わせる機能をリリース - GIGAZINE OpenAI API の Structured Outputs の使い方|npaka
Home Web Document Opening the Software Toolbox 「ソフトウェアの道具箱」はUNIXの考え方の1つを簡潔に説明している SatoKen @kenicode 2024/07/10 13:55 最終更新 2024/07/10 13:56 この「ソフトウェアの道具箱」は、Linux等へも引き継がれ現在でも大いに活用できるUNIXの考え方を、簡潔に紹介してくれていると思います。 この考え方の要約をこの文書から引用すると以下のようになります。 個々のプログラムは、一つの仕事をきちんとやってのければよい。それ以上でもそれ以下でもない。 プログラムを適切な配管工事で組み合わせると、全体が部分の総和以上になる結果が生じる。 作者が想像もしなかったようなプログラムの新しい使用法が見つかることもある。 プログラムは決して余計なヘッダや追加情報を出力すべきではない。 そうしたものもパイプラインの先へ送られてしまうかもしれないからだ。 骨の折れる部分は、他の奴にやらせろ。 自分の道具箱をよく知れ! 個々のプログラムを適切に使え。適切なツールがなかったら、それを作れ。 UNIX系のOSを使うとき、特にパイプを使ってコマンドを組み立てるときに知っていると良い知識であると同時に、UNIX系のOSで動くプログラムを作るときにも、パイプを使って他のコマンド(プログラム)と連携できるようにすることが時に強力な選択肢であることは頭に入れておくと良いと思います。 何しろ短い文章ですので、初めてこの考えに触れるときや、この考えを再確認したいときに、サクッと自分で読んだり、他人に紹介できたり、便利な文章だと思います。
Home Software Libraries Ruby meta-tags meta-tags側のtruncateでは、スペース文字のところで切り詰めが行われます @wakairo 2024/07/05 20:26 最終更新 2024/07/05 20:27 meta-tagsのv2.21.0で'truncate_on_natural_separator'の設定が追加されました。この設定を利用することで、スペース文字のところでの切り詰めを回避できるようになりました。このことを上のコメントに反映しました。
Home Software Windows UniGetUI (formerly WingetUI) WingetUIはv3.1からUniGetUIに名称が変更されました @wakairo 2024/07/04 07:36 winget以外のパッケージ・マネジャーも多数サポートするようになってきたため、WingetUIをUniGetUIにちかぢか名称変更しますというアナウンスメントが2024/03/13に出ていました。 2024/07/03にバージョン3.1がリリースされ、リリース名が初めてUniGetUIになりましたので、名称変更が完了したものと思われます。 なお、バージョン3.0のリリースではWingetUIという名称でした。
Home Software Libraries Ruby activerecord activerecordでは、firstを使った方が実装とSQLが揃って可読性が上がる Takuma @takuma_tech 2024/07/03 14:22 こちらの記事によると、activerecordでlastを使った場合、指定したorderを逆にして"LIMIT 1"とするSQLが発行されるそうです。 一方で、firstを使った場合、指定したorderはそのままで"LIMIT 1"とするSQLとなるので、railsのコードとSQLの対応関係が分かりやすくなります。 したがって、lastよりもfirstを使った方が実装とSQLが揃って可読性が上がるということがこの記事で主張されていました。 ご参考まで。
Home Software Windows UniGetUI (formerly WingetUI) WingetUIにおいてVCRedistのアップデート通知が繰り返される問題とその解決策 @wakairo 2024/06/25 14:09 問題 WingetUIにおいて、Visual C++ 再頒布可能パッケージ(Microsoft.VCRedist.2015+.x64)がアップデート可能であると通知されるので、WingetUIからアップデート操作をして成功と表示されたにもかかわらず、すぐにまたアップデートが可能であると通知されることが繰り返されました。 どうやら、アップデート成功という表示は嘘のようで、実際にはWingetUIからこのVCRedistのアップデートには成功していなかった模様です。 解決策 コマンドプロンプトから以下のコマンドを実行したところ、アップデート通知が繰り返されることはなくなりました。 winget upgrade Microsoft.VCRedist.2015+.x64 つまり、WingetUIからアップデートが上手く行かないときは直接wingetでアップデートすると問題が解決することがあるようです。 参考 本件と関係するかは分かりませんが、以前のコメントにあるように、かつてWingetUIのインストールにおいて"Microsoft.VCRedist.2015+.x64"に関連するエラーが存在していました。
Home Web Service ChatGPT LLMからJSON形式の出力を安定的に得るノウハウ @wakairo 2024/06/11 20:26 Zodスキーマでプロンプト生成を行い構造化データを自由自在に扱えて、LLMプロダクト開発が圧倒的に効率化した話 「TypeScriptをデータ出力例として与えると、かなり忠実に従ってくれるようになる」などのノウハウが示されている。
Home Web Service ChatGPT LLMからJSON形式の出力を安定的に得るノウハウ @wakairo 2024/06/11 20:25 最終更新 2024/08/09 19:08 ChatGPT(OpenAI)のAPIにはスキーマで指定したJSON形式の出力を確実に得るための機能であるStructured Outputsがありますが、他のLLMではJSONのためのこういった機能や設定がない場合もあるようです。 このTopicでは、LLMから安定したJSONを得るためのノウハウやLLMの出力したJSONが問題ないかチェックするためのノウハウを扱います。
Home Software プログラミング言語 Python Pythonライブラリの作成に関する公式情報 SatoKen @kenicode 2024/05/28 19:43 pyproject.tomlの[build-system]の指定が、サンプルプロジェクトではsetuptoolsである一方、チュートリアルではデフォルト扱いがhatchlingになっていて、両者で違いがあって興味深いですね。 公式(PyPA)としては、setuptoolsがまだまだ現役であることを認めつつ、今後はhatchlingを推していきたいということなのかな?
Home Software プログラミング言語 Python Pythonライブラリの作成に関する公式情報 @wakairo 2024/05/25 20:19 最終更新 2024/05/25 20:24 なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。 それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのがsetup.pyではなくpyproject.tomlなのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.tomlファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.pyを設定ファイルの一部として用いる場合であってもpyproject.tomlは配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。 どうやら、Pythonパッケージにはpyproject.tomlを用意すべし、pyproject.tomlを起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.pyを直接実行するやり方はlegacy、つまり、廃止予定とのことですし。
OpenAI(ChatGPT)のAPIで、意図したJSON形式の出力を確実に得るための設定
2024年8月に「Structured Outputs」の機能と設定がOpenAI(ChatGPT)のAPIに導入されました。 この設定を有効にすることで、スキーマで指定したJSON形式の出力を、例外的な場合を除いて、確実に得ることが出来ます。
詳細は以下の記事を参照してください。
「ソフトウェアの道具箱」はUNIXの考え方の1つを簡潔に説明している
この「ソフトウェアの道具箱」は、Linux等へも引き継がれ現在でも大いに活用できるUNIXの考え方を、簡潔に紹介してくれていると思います。
この考え方の要約をこの文書から引用すると以下のようになります。
UNIX系のOSを使うとき、特にパイプを使ってコマンドを組み立てるときに知っていると良い知識であると同時に、UNIX系のOSで動くプログラムを作るときにも、パイプを使って他のコマンド(プログラム)と連携できるようにすることが時に強力な選択肢であることは頭に入れておくと良いと思います。
何しろ短い文章ですので、初めてこの考えに触れるときや、この考えを再確認したいときに、サクッと自分で読んだり、他人に紹介できたり、便利な文章だと思います。
meta-tags側のtruncateでは、スペース文字のところで切り詰めが行われます
meta-tagsのv2.21.0で'truncate_on_natural_separator'の設定が追加されました。この設定を利用することで、スペース文字のところでの切り詰めを回避できるようになりました。このことを上のコメントに反映しました。
WingetUIはv3.1からUniGetUIに名称が変更されました
winget以外のパッケージ・マネジャーも多数サポートするようになってきたため、WingetUIをUniGetUIにちかぢか名称変更しますというアナウンスメントが2024/03/13に出ていました。
2024/07/03にバージョン3.1がリリースされ、リリース名が初めてUniGetUIになりましたので、名称変更が完了したものと思われます。
なお、バージョン3.0のリリースではWingetUIという名称でした。
activerecordでは、firstを使った方が実装とSQLが揃って可読性が上がる
こちらの記事によると、activerecordでlastを使った場合、指定したorderを逆にして"LIMIT 1"とするSQLが発行されるそうです。
一方で、firstを使った場合、指定したorderはそのままで"LIMIT 1"とするSQLとなるので、railsのコードとSQLの対応関係が分かりやすくなります。
したがって、lastよりもfirstを使った方が実装とSQLが揃って可読性が上がるということがこの記事で主張されていました。 ご参考まで。
WingetUIにおいてVCRedistのアップデート通知が繰り返される問題とその解決策
問題
WingetUIにおいて、Visual C++ 再頒布可能パッケージ(Microsoft.VCRedist.2015+.x64)がアップデート可能であると通知されるので、WingetUIからアップデート操作をして成功と表示されたにもかかわらず、すぐにまたアップデートが可能であると通知されることが繰り返されました。
どうやら、アップデート成功という表示は嘘のようで、実際にはWingetUIからこのVCRedistのアップデートには成功していなかった模様です。
解決策
コマンドプロンプトから以下のコマンドを実行したところ、アップデート通知が繰り返されることはなくなりました。
つまり、WingetUIからアップデートが上手く行かないときは直接wingetでアップデートすると問題が解決することがあるようです。
参考
本件と関係するかは分かりませんが、以前のコメントにあるように、かつてWingetUIのインストールにおいて"Microsoft.VCRedist.2015+.x64"に関連するエラーが存在していました。
LLMからJSON形式の出力を安定的に得るノウハウ
Zodスキーマでプロンプト生成を行い構造化データを自由自在に扱えて、LLMプロダクト開発が圧倒的に効率化した話
「TypeScriptをデータ出力例として与えると、かなり忠実に従ってくれるようになる」などのノウハウが示されている。
LLMからJSON形式の出力を安定的に得るノウハウ
ChatGPT(OpenAI)のAPIにはスキーマで指定したJSON形式の出力を確実に得るための機能であるStructured Outputsがありますが、他のLLMではJSONのためのこういった機能や設定がない場合もあるようです。
このTopicでは、LLMから安定したJSONを得るためのノウハウやLLMの出力したJSONが問題ないかチェックするためのノウハウを扱います。
Pythonライブラリの作成に関する公式情報
pyproject.tomlの[build-system]の指定が、サンプルプロジェクトではsetuptoolsである一方、チュートリアルではデフォルト扱いがhatchlingになっていて、両者で違いがあって興味深いですね。 公式(PyPA)としては、setuptoolsがまだまだ現役であることを認めつつ、今後はhatchlingを推していきたいということなのかな?Pythonライブラリの作成に関する公式情報
なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。
それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのが
setup.pyではなくpyproject.tomlなのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.tomlファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.pyを設定ファイルの一部として用いる場合であってもpyproject.tomlは配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。どうやら、Pythonパッケージには
pyproject.tomlを用意すべし、pyproject.tomlを起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.pyを直接実行するやり方はlegacy、つまり、廃止予定とのことですし。