GenAI.Helpers (GenAI Core v0.2.0)

A collection of helper functions for VNextGenAI.

Link to this section Summary

Functions

Handle error tuple response.

Handle {:ok, nil} tuple response. ## Examples

label block response

Link to this section Functions

Link to this function

apply_label(response, label)

label response

examples

Examples

ok-response

OK Response

iex> GenAI.Helpers.apply_label({:ok, :bar}, :foo)
{:foo, :bar}

error-response

Error Response

iex> GenAI.Helpers.apply_label({:error, :bar}, :foo)
{:error, {:foo, :bar}}

non-tuple-response

Non Tuple Response

iex> GenAI.Helpers.apply_label(:bop, :foo)
{:foo, :bop}
Link to this function

on_error(response, action, value)

@spec on_error({:ok, any()} | {:error, any()}, atom(), any()) :: any()

Handle error tuple response.

examples

Examples

iex> {:ok, :return_me} |> GenAI.Helpers.on_error(:label, :unexpected)

iex> {:ok, nil} |> GenAI.Helpers.on_error(:label, :unexpected)

iex> {:error, :foo} |> GenAI.Helpers.on_error(:return_value, :bar)

iex> {:error, :foo} |> GenAI.Helpers.on_error(:return_error, :bar)

iex> {:error, :foo} |> GenAI.Helpers.on_error(:return, :bar) :bar

iex> {:error, :foo} |> GenAI.Helpers.on_error(:call, fn -> :biz end) :biz

iex> {:error, :foo} |> GenAI.Helpers.on_error(:call, fn x -> {:biz, x} end) {:biz, {:error, :foo}}

iex> {:error, :foo} |> GenAI.Helpers.on_error(:label, :wrap) {:error, {:wrap, :foo}}

Link to this function

on_nil(response, action, value)

@spec on_nil({:ok, any()} | {:error, any()}, atom(), any()) :: any()

Handle {:ok, nil} tuple response. ## Examples

iex> {:ok, 5} |> GenAI.Helpers.on_nil(:label, :unexpected)
{:ok, 5}

iex> {:ok, nil} |> GenAI.Helpers.on_nil(:return_value, :bar)
{:ok, :bar}

iex> {:ok, nil} |> GenAI.Helpers.on_nil(:return_error, :bar)
{:error, :bar}

iex> {:ok, nil} |> GenAI.Helpers.on_nil(:return, :bar)
:bar

iex> {:ok, nil} |> GenAI.Helpers.on_nil(:call, fn -> :biz end)
:biz

iex> {:ok, nil} |> GenAI.Helpers.on_nil(:label, :wrap)
{:error, {:wrap, :is_nil}}

iex> {:error, :foo} |> GenAI.Helpers.on_nil(:label, :wrap)
{:error, :foo}
Link to this macro

with_label(label, list)

(macro)

label block response

examples

Examples

ok-response

OK Response

iex> require GenAI.Helpers
iex> GenAI.Helpers.with_label(:foo) do
iex>    {:ok, :bar}
iex> end
{:foo, :bar}

error-response

Error Response

iex> require GenAI.Helpers
iex> GenAI.Helpers.with_label(:foo) do
iex>    {:error, :bar}
iex> end
{:error, {:foo, :bar}}

non-tuple-response

Non Tuple Response

iex> require GenAI.Helpers
iex> GenAI.Helpers.with_label(:foo) do
iex>    :bop
iex> end
{:foo, :bop}