与LLM模型交谈时有没有办法自动格式化终端输入?

问题描述 投票:0回答:1

目前,当用户向 LLM 发送输入时,其格式必须为:

<|im_start|>user\
User input here.<|im_end|>

这非常麻烦并且使得即时工程非常乏味。 现在我正在使用 llama.cpp 在终端本地运行 llama2 模型 - 有没有办法在两个标记(im_start 和 im_end)之间自动插入用户输入?

我可能以错误的方式解决了这个问题,但以下是我尝试过的:

我当前(到目前为止不成功)的方法是使用bash脚本在另一个终端中启动LLM并将当前终端的输出重定向到LLM终端。后来我打算制作一个第一个“启动器终端”的脚本,它将格式化所有用户输入并将其发送到 LLM 终端。

到目前为止我还无法让终端之间的通信正常工作。这个剧本对我来说是微不足道的。我正在努力解决的是 bash 脚本问题。

我怀疑我的 bash 实现有很大缺陷,我对此不太有经验。

RUN_PATH="/llama.cpp/main"
MODEL_PATH="/llama.cpp/models/dolphin-2.9-llama3-8b-q4_K_M.gguf"
INIT_PATH="prompt.txt"

FLAGS="-n 512 --keep -1 --ctx-size 2048 --temp 0.0"

LAUNCH_CMD=".${RUN_PATH} -m .${MODEL_PATH} ${FLAGS} --color  --interactive-first --file .${INIT_PATH}"

# gnome-terminal -- "${LAUNCH_CMD}"
# Here im launching an impostor python program which just prints the input it receives.
gnome-terminal -- python3 impostor.py

LAUNCHER_PID="${$}"
LLM_PID="$PPID"

# It seems I don't get the PIDs i expect to get.
echo "Launcher PID: ${LAUNCHER_PID}"
echo "LLM PID:  ${LLM_PID}"

# Set STD-output of the launcher to LLM
ps -p $LLM_PID << ps -p $LAUNCHER_PID
/bin/bash

在启动器终端中输入

echo hello world
时,它不会显示在 LLM 终端中,这是所需的效果。

bash gnome-terminal llama llamacpp
1个回答
0
投票

如果您想连接到正在运行的进程的标准输入和输出,您可以使用 coprocess

类似的东西

coproc ./impostor.py

然后您可以读取查询、修改它们并发送到协进程

while read -rp 'Prompt: ' p; do printf '<|im_start|>user\\\n%s<|im_end|>\n' "$p" >&"${COPROC[1]}"; done

要阅读来自

${COPROC[0]}

的回复
© www.soinside.com 2019 - 2024. All rights reserved.