View Source Continuation Kino App
Mix.install([
{:openai_ex, "~> 0.1.8"},
{:kino, "~> 0.9.2"}
])
alias OpenaiEx
alias OpenaiEx.Completion
simple-kino-ui
Simple Kino UI
openai = System.fetch_env!("LB_OPENAI_API_KEY") |> OpenaiEx.new()
Set default parameters for continuation fields
comp_models = [
"text-davinci-003",
"text-davinci-002",
"text-curie-001",
"text-babbage-001",
"text-ada-001"
]
model = comp_models |> Enum.at(0)
max_tokens = 100
temperature = 1
prompt-response-ui
Prompt / Response UI
frame = Kino.Frame.new()
inputs = [prompt: Kino.Input.textarea("Prompt")]
form = Kino.Control.form(inputs, submit: "Send", reset_on_submit: [:prompt])
Kino.listen(form, fn %{data: %{prompt: prompt}} ->
Kino.Frame.append(frame, Kino.Markdown.new("**Me** #{prompt}"))
text =
openai
|> Completion.create(%{
model: model,
prompt: prompt,
max_tokens: max_tokens,
temperature: temperature
})
|> Map.get("choices")
|> Enum.at(0)
|> Map.get("text")
Kino.Frame.append(frame, Kino.Markdown.new("**#{model}** #{text}"))
end)
Kino.Layout.grid([frame, form], boxed: true, gap: 16)