专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
GiantPandaCV  ·  《超大规模操作手册:在 GPU 集群上训练 ... ·  3 天前  
51好读  ›  专栏  ›  GitHubStore

stickerbaker: AI贴纸生成

GitHubStore  · 公众号  ·  · 2024-03-11 07:06

正文

项目简介


输入提示并使用 https://replicate.com/fofr/sticker-maker 生成贴纸。

主页以 呈现。 lib/sticker_web/home_live.ex 提交提示表单时,将调用此handle_event:

  def handle_event("save", %{"prompt" => prompt}, socket) do    user_id = socket.assigns.local_user_id
{:ok, prediction} = Predictions.create_prediction(%{ prompt: prompt, local_user_id: user_id })
send(self(), {:kick_off, prediction})
{:noreply, socket |> assign(form: to_form(%{"prompt" => ""})) |> stream_insert(:my_predictions, prediction, at: 0)} end

这会向 LiveView 发送一条 :kick_off 消息(因此没有延迟),该消息调用 Predictions.moderate/3 lib/sticker/predictions.ex

  @doc """  Moderates a prediction.  The logic in replicate_webhook_controller.ex handles  the webhook. Once the moderation is complete, the webhook controller automatically  called gen_image.  """  def moderate(prompt, user_id, prediction_id) do    "fofr/prompt-classifier"    |> Replicate.Models.get!()    |> Replicate.Models.get_latest_version!()    |> Replicate.Predictions.create(      %{        prompt: "[PROMPT] #{prompt} [/PROMPT] [SAFETY_RANKING]",        max_new_tokens: 128,        temperature: 0.2,        top_p: 0.9,        top_k: 50,        stop_sequences: "[/SAFETY_RANKING]"      },      "#{Sticker.Utils.get_host()}/webhooks/replicate?user_id=#{user_id}&prediction_id=#{prediction_id}"    )  end


我们将一个 webhook 传递给 Replicate。webhook 的所有逻辑都存在于 lib/sticker_web/controllers/replicate_webhook_controller.ex 中。这个 Webhook 的好处是我们可以刷新页面或断开连接,而 Replicate 仍然为我们处理预测队列。一旦预测准备好,我们将其上传到 Tigris(Replicate 不会为我们保存我们的数据),然后贴纸会广播回我们的 home_live.ex .


重要的是,由于我们传递了 Replicate 一个 Webhook,因此对于本地开发,需要运行 ngrok 以将 localhost 隧道连接到 URL。安装 ngrok 后,运行 ngrok http 4000 它并将 URL 粘贴到复制 .env 的文件中。

开发

要启动 Phoenix 服务器,请执行以下操作:

  • 运行 mix setup 以安装和设置依赖项

  • 创建一个 env 文件 cp .env.copy .env

    • 添加复制令牌

    • 添加底格里斯河代币

    • 启动 ngrok ngrok http 4000 并将其添加到您的环境中

  • 使用 mix phx.server IEx 或在 IEx iex -S mix phx.server 内部启动 Phoenix 端点

  • 将 .env 文件REPLICATE_API_TOKEN设置为复制令牌

现在,您可以从浏览器访问 localhost:4000 。


项目链接







请到「今天看啥」查看全文