LLM 会话¶
AgentHeaven 提供了交互式聊天会话功能,让您可以与 LLM 进行持续的多轮对话。
1. LLM 配置系统¶
1.1. 预置配置 (Preset)¶
与推理命令一致,会话支持通过 --preset 指定模型预置:
ahvn session --preset gpt4
1.2. 服务商 (Provider)¶
通过 --provider 指定服务商:
ahvn session --provider openrouter
1.3. 模型 (Model)¶
通过 --model 指定模型名称:
ahvn session --model gpt-4
1.4. 配置参数¶
会话支持与 ahvn chat 相同的参数,包括 --system、-i 文件输入、--no-cache、--no-stream 等:
ahvn session --preset gpt4 --system "You are a helpful coding assistant" -i project.md -i requirements.txt --no-cache --no-stream
2. 基本用法¶
2.1. 启动会话¶
启动一个基本的交互式会话:
ahvn session
2.2. 带初始提示的会话¶
可以在启动会话时提供初始消息:
ahvn session "Hello, let's start our conversation"
2.3. 临时修改配置¶
在启动时临时修改参数:
ahvn session --preset coding-assistant --verbose
3. 输出模式¶
3.1. 流式输出与整体输出¶
流式输出(默认):实时显示助手回复
整体输出:禁用流式后,完整显示回复
ahvn session --stream
ahvn session --no-stream
4. 会话界面增强¶
4.1. Prompt Toolkit 集成¶
AgentHeaven 使用 prompt_toolkit 提供增强的交互体验:命令历史、自动补全、多行输入、鼠标支持等。
pip install prompt_toolkit
未安装时自动回退为标准输入。
4.2. 快捷键¶
Ctrl+C 或 Ctrl+D:退出会话
上/下箭头键:浏览历史
Enter:发送消息
5. 会话命令¶
5.1. 退出命令¶
/exit /quit /bye /e /q /b
5.2. 帮助命令¶
/help /h /? /commands
5.3. 保存会话¶
/save # 保存到 session.json(默认)
/save my_chat.json # 保存到指定文件
/s my_chat.json # 简写
5.4. 加载会话¶
/load # 从 session.json 加载(默认)
/load my_chat.json # 从指定文件加载
/l my_chat.json # 简写
6. 缓存系统¶
6.1. 启用/禁用缓存¶
AgentHeaven 默认启用响应缓存以提高性能:
# 启用缓存(默认)
ahvn session --cache
# 禁用缓存
ahvn session --no-cache
缓存基于消息内容与参数共同的哈希值,完全相同的整段对话会返回缓存的结果。
注意CLI推理缓存与CLI会话缓存独立,CLI会话缓存位于~/.ahvn/cache/session_cli/。
6.2. 缓存清理¶
使用全局命令清理缓存:
ahvn clean # 清理所有缓存
ahvn clean --dry-run # 预览将要清理的内容
7. 输入文件与系统提示词¶
7.1. 使用输入文件¶
可以将文件内容作为初始对话的一部分。注意,当只输入文件,不输入prompt时,默认会等待用户输入。
ahvn session -i README.md -i src/main.py
仅支持纯文本文件(.txt, .md, .py, .json 等),不支持文件夹与其他文件格式。
7.2. 设置系统提示词¶
使用系统提示词定义助手的行为。注意,当只输入系统提示词,不输入prompt时,默认会等待用户输入。
ahvn session --system "You are a Python expert"
8. 复杂示例¶
8.1. 长期会话与文件输入¶
ahvn session \
--system "You are a project consultant" \
-i README.md \
-i src/main.py \
-i docs/design.md \
--preset gpt4
8.2. 会话文件格式¶
保存的会话文件为 JSON 格式,结构如下:
[
{
"role": "system",
"content": "You are a helpful assistant"
},
{
"role": "user",
"content": "Hello!"
},
{
"role": "assistant",
"content": "Hello! How can I help you today?"
}
]