Application alimentée par l'IA (avec LLM) avec Elixir, Phoenix, LiveView et TogetherAI

DEV - 25/07
Vous avez toujours voulu récolter des millions de dollars en ajoutant « AI » au nom de votre entreprise ; et il se trouve que tu veux...

Vous avez toujours voulu récolter des millions de dollars en ajoutant « AI » au nom de votre entreprise ; et vous souhaitez le coder avec Elixir, Phoenix, LiveView ? Il s'agit du didacticiel sur la manière d'effectuer des appels d'API vers des fournisseurs de modèles comme Together AI ; Attendez, pas seulement les appels, mais les flux HTTP pour recevoir les données en morceaux.

Grande image pour n’importe quelle pile :

  1. Recevoir une invite de l'utilisateur
  2. Envoyer l'invite à TogetherAI via un appel API
  3. Gérer la sortie LLM des morceaux entrants

TLDR :

Dans le monde Elixir, nous allons avoir deux processus, un pour la visualisation en direct et un autre processus qui gérera les appels HTTP avec les flux. LiveView enverra l'invite et son pid (identifiant de processus) au gestionnaire, qui à son tour générera un processus distinct qui effectuera un appel HTTP et enverra les morceaux de sortie LLM à LiveView à mesure que les morceaux arrivent. Lorsque le dernier morceau arrive, nous informons alors le LiveView que la génération du texte est terminée.

Installation

Générez un nouveau projet Phoenix en exécutant

mélanger phx.new phoenix_playground

cd ./phoenix_playground # vous devrez créer une base de données PostgreSQL en cours d'exécution. Alternativement, utilisez simplement l'indicateur --sqlite lors de la génération du mix de projet Phoenix ecto.create iex -S mix phx.server
Entrer en mode plein écran Quitter le mode plein écran

Accédez à mix.exs et ajoutez Req aux dépendances :

{:req, "~> 0.5.0"}

Mise en œuvre

Commençons par le LiveView. Voici l'échafaudage du LiveView avec un formulaire qui gérera la saisie et lors de la soumission, définira l'état de chargement sur true et enverra l'invite à TogetherAI.

defmodule PhoenixPlaygroundWeb.HomeLive alias PhoenixPlayground.TogetherAi utilise PhoenixPlaygroundWeb, :live_view def mount(_params, _session, socket) do socket = socket |> assign(:loading, false) |> assign(:text, "") {:ok, socket} end def render(assign...
[Courte citation de 8% de l'article original]
Loading...