Eai. Chat
(eai v0.1.9)
Copy Markdown
Main conversation GenServer managing multi-session chat history and async LLM tasks.
Summary
Functions
Returns a specification to start this module under a supervisor.
显式关闭一个会话,释放其历史记录。不能关闭 "default" 会话。
导出指定会话的对话历史为 Record 兼容的 gzip 文件。
由 LLM 工具 export_context 或用户手动调用。
强制中断:设置中断标记,模型在下次轮询结果时会自动注入 Ctrl+C。 仅在异步交互模式下有效(同步模式会阻塞,无法调用此函数)。
列出所有活跃会话及其消息数和状态。
从 Record 兼容的 gzip 文件加载消息列表,替换指定会话的对话历史。
发送一条独立消息(用于子代理调用),不累积主会话历史。 返回 {:ok, reply} 或 {:error, reason}。
统一对话入口。
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
显式关闭一个会话,释放其历史记录。不能关闭 "default" 会话。
导出指定会话的对话历史为 Record 兼容的 gzip 文件。
由 LLM 工具 export_context 或用户手动调用。
强制中断:设置中断标记,模型在下次轮询结果时会自动注入 Ctrl+C。 仅在异步交互模式下有效(同步模式会阻塞,无法调用此函数)。
列出所有活跃会话及其消息数和状态。
从 Record 兼容的 gzip 文件加载消息列表,替换指定会话的对话历史。
format 参数: "converse" (默认) — 消息已是 Eai.Message IR 格式 "openai" — 消息为 OpenAI 格式,需要适配器转换 "anthropic" — 消息为 Anthropic 格式,需要适配器转换
发送一条独立消息(用于子代理调用),不累积主会话历史。 返回 {:ok, reply} 或 {:error, reason}。
可选 opts: pty_session_id: "my_agent" # PTY session ID(默认 "default") chat_session_id: "my_session" # Chat 历史 session ID(默认 "default") model: :gpt4o prompt: :coder
统一对话入口。
交互式多行模式(human / :h)
进入后逐行输入,`/s` 发送,`/c` 取消。
发送后立即返回 iex 提示符,任务在后台运行,结果自动打印。
可以随时调用 `Eai.Chat.interrupt!` 中断。
iex> Eai.Chat.talk
iex> Eai.Chat.talk(mod: :h, timeout: 10_000)
iex> Eai.Chat.talk(model: :gpt4o)
iex> Eai.Chat.talk(prompt: :coder)
iex> Eai.Chat.talk(chat_session: "work")单行消息模式(function / :f)
同步等待回复,返回 {:ok, reply} 或 {:error, reason}。
iex> Eai.Chat.talk(content: "帮我查一下时间")
iex> Eai.Chat.talk(mod: :f, content: "查时间", timeout: 30_000)
iex> Eai.Chat.talk(content: "hi", model: :claude_sonnet, prompt: :analyst)
iex> Eai.Chat.talk(content: "继续", chat_session: "work")model / prompt / chat_session 参数
model / prompt 传 models.exs / prompts.exs 中定义的 :name atom。
chat_session 传字符串,省略时使用 "default" 会话。
iex> Eai.Models.names() # 查看所有可用模型
iex> Eai.Prompts.list() # 查看所有可用 prompt
iex> Eai.Chat.list_chat_sessions() # 查看所有会话