对标 LangChain,一个使用 Java 开发的 LLM(大语言模型)应用开发框架
Agents-Flex: 一个优雅的 LLM(大语言模型) 应用开发框架
基础能力
- LLM 的访问能力
- Prompt、Prompt Template 定义加载的能力
- Function Calling 定义、调用和执行等能力
- Embedding
- Vector Storage
- 丰富的内容加载器
- 丰富的文本分割器
- LLM Chain
- Agents Chain
简单对话
使用 OpenAi 大语言模型:
public static void main(String[] args) throws InterruptedException { OpenAiConfig config = new OpenAiConfig(); config.setApiKey("sk-rts5NF6n*******"); Llm llm = new OpenAiLlm(config); Prompt prompt = new SimplePrompt("请写一个关于小兔子战胜大灰狼的故事。"); llm.chat(prompt, (llmInstance, message) -> { System.out.println("--->" + message.getContent()); }); Thread.sleep(10000); }
使用 “通义千问” 大语言模型:
public static void main(String[] args) throws InterruptedException { QwenLlmConfig config = new QwenLlmConfig(); config.setApiKey("sk-28a6be3236****"); config.setModel("qwen-turbo"); Llm llm = new QwenLlm(config); Prompt prompt = new SimplePrompt("请写一个关于小兔子战胜大灰狼的故事。"); llm.chat(prompt, (llmInstance, message) -> { System.out.println("--->" + message.getContent()); }); Thread.sleep(10000); }
使用 “讯飞星火” 大语言模型:
public static void main(String[] args) throws InterruptedException { SparkLlmConfig config = new SparkLlmConfig(); config.setAppId("****"); config.setApiKey("****"); config.setApiSecret("****"); Llm llm = new SparkLlm(config); Prompt prompt = new SimplePrompt("请写一个关于小兔子战胜大灰狼的故事。"); llm.chat(prompt, (llmInstance, message) -> { System.out.println("--->" + message.getContent()); }); Thread.sleep(10000); }
历史对话示例
public static void main(String[] args) throws InterruptedException { SparkLlmConfig config = new SparkLlmConfig(); config.setAppId("****"); config.setApiKey("****"); config.setApiSecret("****"); // 创建一个大模型 Llm llm = new SparkLlm(config); //创建一个历史对话的 prompt HistoriesPrompt prompt = new HistoriesPrompt(); System.out.println("您想问什么?"); Scanner scanner = new Scanner(System.in); //等待用户从控制台输入问题 String userInput = scanner.nextLine(); while (userInput != null){ prompt.addMessage(new HumanMessage(userInput)); //向大模型提问 llm.chat(prompt, (instance, message) -> { System.out.println(">>>> " + message.getContent()); }); //继续等待用户从控制台输入内容 userInput = scanner.nextLine(); } }
Function Calling
- 第一步: 通过注解定义本地方法
public class WeatherUtil { @FunctionDef(name = "get_the_weather_info", description = "get the weather info") public static String getWeatherInfo( @FunctionParam(name = "city", description = "the city name") String name ) { //这里应该是通过接口去调用获得天气信息 return name + "的天气是阴转多云。 "; } }
- 第二步: 通过 Prompt、Functions 传入给大模型,然后得到结果
public static void main(String[] args) throws InterruptedException { OpenAiLlmConfig config = new OpenAiLlmConfig(); config.setApiKey("sk-rts5NF6n*******"); OpenAiLlm llm = new OpenAiLlm(config); Functions<String> functions = Functions.from(WeatherUtil.class, String.class); String result = llm.call(new SimplePrompt("今天的天气如何"), functions); System.out.println(result); // "北京的天气是阴转多云。 "; Thread.sleep(10000); }
注意:当前版本为 v1.0.0-alpha.1 ,请暂时勿使用于与正式的商业产品中。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SecBench:首个网络安全大模型评测平台发布
2024年1月19日,业界首个网络安全大模型评测平台SecBenc正式发布,该平台由腾讯朱雀实验室和腾讯安全科恩实验室,联合腾讯混元大模型、清华大学江勇教授/夏树涛教授团队、香港理工大学罗夏朴教授研究团队、上海人工智能实验室OpenCompass团队共同建设,主要解决开源大模型在网络安全应用中安全能力的评估难题,旨在为大模型在安全领域的落地应用选择基座模型提供参考,加速大模型落地进程。同时,通过建设安全大模型评测基准,为安全大模型研发提供公平、公正、客观、全面的评测能力,推动安全大模型建设。 行业首发,弥补大模型在网络安全垂类领域评测空白 自2022年11月ChatGPT发布以来,AI大模型在全球范围内掀起了有史以来规模最大的人工智能浪潮,大模型的落地进程也随之加速。然而,在网络安全应用中,大模型研发人员如何选择合适的基座模型,当前大模型的安全能力是否已经达到业务应用需求,都成为亟待解决的问题。 SecBench网络安全大模型评测平台,将重点从能力、语言、领域、安全证书考试四个维度对大模型在网络安全领域的各方面能力进行评估,为大模型研发人员、学术研究者提供高效、公正的基座模型选型工具和...
- 下一篇
给科研人的 ML 开源发布工具包
什么是开源发布工具包? 恭喜你的论文成功发表,这是一个巨大的成就!你的研究成果将为学界做出贡献。 其实除了发表论文之外,你还可以通过发布研究的其他部分,如代码、数据集、模型等,来增加研究的可见度和采用率。这将使更多人能够使用你的研究,并推动研究成果的应用。我们整理了这份文件,让你可以更好的了解和实践开源。希望这份文件对你有所帮助! 什么是开源? 公开研究 - 不仅仅是论文,还包括相关的所有成果,如代码、模型、数据集或在线演示。 为什么要开源? 进行开放获取研究[^1],可以让更多的人了解和使用你的研究或项目成果,促进社区研究人员之间的合作。通过共享机器学习的知识和资源以及社区协作,来推动机器学习领域的发展。 [^1]:开放获取意味着一个成果是公开可访问的。例如,你可以公开发布一个模型,同时拥有一个不完全符合开源倡议组织 (OSI) 对开源所设定的确切标准的许可证。例如,如果许可证限制了模型的使用方式,它就不被视为开源。不过,它仍然是对社区有价值的开放获取成果! 如何开源? 机器学习发布有很多的形式和规模。你可以根据你的时间线、优先级、内部政策或者其他因素来决定如何开源和开源哪些内容。比...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)