Ash Weekly: 第19号まとめ

Ashホームページ/ドキュメント刷新、AshAdminファイルアップロード、AshAI非OpenAI LLM、UsageRules --sync-to-folderフラグ、Reactorドキュメント刷新、新しいAsh拡張。

View count: -

Ash Weekly: 第19号まとめ

Ash は現在Elixirで最も注目され、標準となりつつある宣言型フレームワークです。Ash Weekly はAshエコシステムで起きている出来事を毎週伝えており、その内容をまとめてお届けします。

原文: Ash Weekly: Issue #19

ホームページ & What is Ashガイド刷新

Ashは他の言語では一般的でないコンセプトのフレームワークなので、その概念を理解するには追加の説明が必要です。

これまでホームページやドキュメントの説明がやや不足していましたが、今回AshホームページやドキュメントのWhat is Ash?セクションがアップデートされ、より分かりやすくなりました。

Ashがまだよく分からない方は、ぜひ一度ご覧ください!

AshAdminのファイルアップロード対応

AshAdminは、Ashの宣言から自動で管理画面を生成するライブラリです。

これまでファイルアップロードはできませんでしたが、今回:file型の引数に対して自動でファイルアップロードがサポートされるようになりました。(こうしたAshエコシステムの進化は多くがコミュニティメンバーによるものです👍)

デザインはまだあまり洗練されていませんが、今後の改善に期待です。

prompt-backed actionsでOpenAI以外のモデルも対応

AshAIはAshベースでAI関連の処理を簡単に作れるライブラリで、prompt-backed actionはLLMを使ってアクションを実行する機能です。

理解のため、AshAIのREADME.mdにある例を紹介します。

action :analyze_sentiment, :atom do
  constraints one_of: [:positive, :negative]

  description """
  Analyzes the sentiment of a given piece of text to determine if it is overall positive or negative.
  """

  argument :text, :string do
    allow_nil? false
    description "The text for analysis"
  end

  run prompt(
    LangChain.ChatModels.ChatOpenAI.new!(%{ model: "gpt-4o"})
  )
end

従来はOpenAIモデルのみ利用可能でしたが、さまざまなアダプターのサポートにより、他のプロバイダーのLLMも利用できるようになりました。

UsageRules --sync-to-folderフラグ

UsageRulesは各ライブラリのusage-rules.mdを集め、LLMのコンテキストとして使えるようにするプロジェクトです。

今回--sync-to-folderフラグが追加され、すべての内容を1つのファイルにまとめる代わりに、各ファイルへのリンク形式で利用できるようになりました。

例:

<-- usage-rules-start -->
<-- ash-start -->
## ash usage
[ash usage rules](deps/ash/usage-rules.md)
<-- ash-end -->
<-- ash_ai-start -->
## ash_ai usage
[ash_ai usage rules](deps/ash_ai/usage-rules.md)
<-- ash_ai-end -->
<-- usage-rules-end -->

この方法だとすべての内容をコンテキストに入れないため、トークン消費が減りますが、必要なファイルを探すのに時間がかかる場合もあります。用途に応じて使い分けてください。

Reactorドキュメント刷新

ReactorSagaパターンを簡単に使えるようにするライブラリです。Sagaパターンは分散トランザクションの実装に適しています。

今回ドキュメントが刷新されたので、Sagaパターンに興味のある方はぜひご覧ください。

Changelogにコントリビューター名が記載

Ashプロジェクトに貢献すると、リリースノートに名前が記載されるようになりました。コミュニティ構築への取り組みが伺えます。

コミュニティ拡張

AshNeo4j

Ashで代表的なグラフデータベースNeo4jをサポートするライブラリです。

AshOutstanding

AshでOutstandingプロトコルをサポートするライブラリです。

Outstandingプロトコルは、期待する値が満たされているか、満たされていない場合はどこが未達かを簡単に把握できる仕組みのようです。

AshCommanded

AshでCQRS/ESパターンを簡単に適用できるCommandedをサポートするライブラリです。

CQRS/ESパターンは以前から試してみたいと思いつつまだ使ったことがありませんが、最近発表されたAshEventsもあるので、ぜひ挑戦してみたいです。

LLMs & Elixir: Windfall or Deathblow

最近、Zach DanielによるLLMs & Elixir: Windfall or DeathblowがHacker Newsで話題になりました。

最近のTidewavePhoenix.newUsageRulesなど、ElixirでAIを活用したコーディングをより簡単にする取り組みとも方向性が一致しています。