Skip to content

Instantly share code, notes, and snippets.

@squiter
Created April 7, 2025 14:36
Show Gist options
  • Save squiter/1a3d544489052676cadf6bce6de3d4a0 to your computer and use it in GitHub Desktop.
Save squiter/1a3d544489052676cadf6bce6de3d4a0 to your computer and use it in GitHub Desktop.
With vs Pipes
defmodule ArticleBuilder do
def generate_content(topic) do
initial_messages = [
%{role: :system, content: "You are an expert at crafting SEO friendly blog articles"}
]
with {:outline, {:ok, _outline, outline_messages}} <-
{:outline, create_outline(initial_messages, topic)},
{:article, {:ok, article, _article_messages}} <-
{:article, create_article(outline_messages)},
{:translation, {:ok, translated_article, _translated_messages}} <-
{:translation, translate_to(article, "german")} do
{article, translated_article}
else
{stage, {:error, _err}} -> "Error in stage #{stage}"
end
end
# ...
end
defmodule ArticleBuilder do
def generate_content(topic) do
initial_messages = [
%{role: :system, content: "You are an expert at crafting SEO friendly blog articles"}
]
initial_messages
|> create_outline(topic)
|> do_create_article()
|> do_translate_to("german")
end
defp do_create_article({:outline, {:error, _msn} = err), do: {:outline, err}
defp do_create_article({:outline, {:ok, _outline, outline_messages}}) do
create_article(outline_messages)
end
defp do_translate_to({:article, {:error, _msg} = err}), do: {:article, err}
defp do_translate_to({:article, {:ok, article, _article_messages}}, lang) do
translate_to(artigle, lang)
end
# ...
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment