我有一个名为 main.exe 的程序。它是一个 LLM(大型语言模型)。从命令行运行它时,经过一些统计后,我会看到“>”以插入我的问题。然后我可以写下我的问题“月亮是什么?”然后它回答“月球是绕地球运行的天然卫星”。 “>”和我的问题是绿色的 他的回答从新的一行开始,并且是白色的。
我需要从 excel vba 与这个程序进行交互。我需要问他我在单元格 A1 到 A 1000 中的问题,然后我需要收集答案。
如何做到这一点?
我试过这个:
Dim myshell As Object
Set myshell = CreateObject("WScript.Shell")
Dim inputStr1 As String
inputStr1 = "What is the moon?"
Dim exec As Object
Set exec = myshell.exec("D:\Win10User\Downloads\AI\Windows\llama-master-aaf3b23-bin-win-avx2-x64\excel.bat")
Application.Wait (Now + TimeValue("0:00:10"))
exec.StdIn.WriteLine inputStr1
Application.Wait (Now + TimeValue("0:00:10"))
Debug.Print exec.stdout.ReadAll
我看到一个黑屏,里面什么也没有。但实际上程序正在运行,只是没有显示。不知道为什么。
Bat文件是这样的:
title llama.cpp
:start
cd D:\Win10User\Downloads\AI\Windows\llama-master-aaf3b23-bin-win-avx2-x64
D:
main -m ../../model/ggml-gpt4-x-13b-q4_1.bin --color -f ./alpaca.txt -ins -b 512 -c 2048 -n 2048 --top_k 10000 --temp 0.8 --repeat_penalty 1 -t 7
pause
goto start
当它到达 Debug.Print exec.stdout.ReadAll 时,它崩溃了。我认为这是因为这个命令是在程序关闭后得到一个输出。如果我然后关闭命令提示符窗口(仍然是空的)。我进入了 vba 的调试窗口:
D:\Documents>title llama.cpp
D:\Documents>cd D:\Win10User\Downloads\AI\Windows\llama-master-aaf3b23-bin-win-avx2-x64
D:\Win10User\Downloads\AI\Windows\llama-master-aaf3b23-bin-win-avx2-x64>D:
D:\Win10User\Downloads\AI\Windows\llama-master-aaf3b23-bin-win-avx2-x64>main -m ../../model/ggml-gpt4-x-13b-q4_1.bin --color -f ./alpaca.txt -ins -b 512 -c 2048 -n 2048 --top_k 10000 --temp 0.2 --repeat_penalty 1 -t 7
[33m Below is an instruction that describes a task. Write a response that appropriately completes the request.[0m[1m[32m
> [0m42[1m[32m
> y completes the request.[0m[1m[32m
> [0m42Ф€ XÿÒ•K € vìœK «8·ú vìœK ËÄK ̤€
我对这样做的多种方式持开放态度。皮西翁脚本? 唯一的问题是:最好不要为每个输入重新运行 main.exe 文件。这些程序需要相当长的时间才能首次运行。