一、基本用法

1.1 定义业务接口

 View Code

注:{{it}}是langchain4j内部约定的默认占位符名。当只有1个参数时,{{it}}在运行时,会自动替换成用户的prompt. 当然也可以强制指定参数名,就本示例而言,注释的二种写法,完全等效。

1.2 使用AiServices创建实例

 View Code

是不是很简单?运行效果:

image

二、结构化输出

AIService还可以将输出结果,以结构化输出(即:直接输出强类型的POJO对象),继续将上述示例改造一下:

2.1 定义POJO对象

 View Code

2.2 定义1个extrator接口

 View Code

2.3 使用示例

 View Code

运行效果:

image

image

 三、流式响应

 View Code

 

lqz

四、可观测性(trace跟踪)

LLM应用中,trace跟踪是很重要,比如:每次请求消耗了多少token,哪个环节耗时最大,每次请求LLM的输入/输出是什么...

4.1 model级别的监听器

 View Code

自定义1个listener,可以把LLM的输入、输出、错误信息都拿到,按实际业务需求做相应处理(比如:记日志,或存储便于离线分析),在注入model时,加上这个监听器

 View Code

4.2 AiService监听器

image

 langchain4j内置这几种AiService的监听器,这里我们挑2个做为示例

 View Code

 View Code

顾名思义,1个是start(开始)的监听器,1个是complete(完成)的监听器

 View Code

加入以上listener后,我们来看看运行时的控制台输出

 View Code

其中:

行1 - 是CustomAiServiceStartedListener的输出

行57 - 是CustomAiServiceCompletedListener的输出

行31,54,56等是CustomChatModelListener的输出,其中要注意的是:

CustomChatModelListener.onRequest中, 上下文中示例放了1个自定义属性  my-attribute -> my-value

image

然后在onResponse中, 在输出结果中,尝试获取这个属性

image

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐