尝试做一个集成多个大模型的AI助手
一个很朴素的想法是:既然市面上存在这么多大模型,秉持着存在即合理的原则,每个模型应该都有其优势。比如说:文心一言的API产品矩阵十分丰富、通义千问API分区以及内容生成更加完善、豆包有算法帝的算法、GPT是传统王者...
2万字大模型调研:横向对比文心一言、百川、Minimax、通义千问、讯飞星火、ChatGPT | 人人都是产品经理 (woshipm.com)
那有没有一个现成的产品能兼容所有优点,或者至少能从中选出最适合当前场景的大模型?
github上还有大佬的成熟项目,我也尝试写一个,此博客记录我从零开始编写自己的LLM-Client
- 如果从一个产品的角度思路这个项目,一期要先实现简单的API调用和呈现,二期解决延迟、重试、VPN切换等待性能问题
现阶段效果:
后端实现方式有很多,由于我是Java程序员,项目框架选择Spring-boot
-
想法1:由Java调用python脚本,在不同python脚本中调各大模型的包,远程调用API
问题:
- 异构语言,不易联调
-
想法2:Java语言中封装请求的Request Body,直接调用远程API
由于大模型提供的Java client不完善,所以大部分只能自己手写封装JSON的逻辑 不同模型RequestBody规范不同,Response Body也不同,同时还有不同场景的不同规范...工程量较大
-
想法3:在调用接口过程中发现响应太慢,官方文档提供的解决方案是使用流式查询,查询过程中实时刷新client页面内容;除此之外,我想要不干脆把模型迁移到本地?GPT提供了开源版本,其他模型应该也会提供,如果我将开源的模型在本地用同样的文本训练,最终结果的不同就完全是算法的不同...
现阶段核心代码:
public class PythonEngine {
public static String execPythonScript(String content,AIModules modules){
Process proc;
try {
String[] args1=new String[]{
"C:\\Users\\吴松林\\PycharmProjects\\pythonProject\\.venv\\Scripts\\python.exe",
modules.path,
content,
"user"};
proc = Runtime.getRuntime().exec(args1);
InputStream is = proc.getInputStream();
byte[] bytes = is.readAllBytes();
String ans = new String(bytes, Charset.forName("gbk"));
proc.waitFor();
return ans.length() == 0?"接口异常":ans;
} catch (IOException | InterruptedException e) {
e.printStackTrace();
return "接口异常";
}
}
dashscope.api_key = "yours"
content = sys.argv[1]
def call_with_messages():
messages = [
# {'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': content}]
response = dashscope.Generation.call(
dashscope.Generation.Models.qwen_turbo,
messages=messages,
result_format='message', # set the result to be "message" format.
)
if response.status_code == HTTPStatus.OK:
choices = response.output.choices
for choice in choices:
print(choice.message.content)
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
if __name__ == '__main__':
call_with_messages()
希望看到这里的大佬多多指教
转载自:https://juejin.cn/post/7360887387918827583