目录
一、使用langchain4j-agentic构建智能体应用
二、核心概念
1、 @Agent("Edits a story to better fit a given audience") 用于描述agent的设计目的,以及其他agent通过这些描述决定用不用、什么时候使用该agent.
2、Agent的名字,可以直接定义。也可以通过代理构建器的名称方法进行程序化
未直接定义带有 @Agent 注释的方法名称
3、使用该 AgenticServices.agentBuilder() 方法构建该代理实例,指定接口和聊天模型。
4、AI service与 agent的区别
5、AgenticScope存储共享变量(多个agent直接交互)
6、工作流Workflow模式,这些模式可以组合起来,创造更复杂的工作流程。
7、循环工作流Loop
8、Parallel workflow 并行工作流
9、Conditional workflow 条件工作流
10、Asynchronous agents 异步代理
11、Error handling 错误处理
12、追踪Agent调用过程(可观测性)
13、以上内容都可以使用注解完成(即 声明式 API)
以下内容参考自:
https://docs.langchain4j.dev/tutorials/agents/
一、使用langchain4j-agentic构建智能体应用
智能体一般说是采用多个AI services来开发融入人工智能的应用程序.
智能系统架构可以分为两大类:
- 工作流
- 纯智能体
二、核心概念
1、 @Agent("Edits a story to better fit a given audience") 用于描述agent的设计目的,以及其他agent通过这些描述决定用不用、什么时候使用该agent.
public interface AudienceEditor { @UserMessage(""" You are a professional editor. Analyze and rewrite the following story to better align with the target audience of { {audience}}. Return only the story and nothing else. The story is "{ {story}}". """) @Agent("Edits a story to better fit a given audience") String editStory(@V("story") String story, @V("audience") String audience); }2、Agent的名字,可以直接定义。也可以通过代理构建器的
名称方法进行程序化未直接定义带有
@Agent注释的方法名称
@Agent(name = "",description = "Edits a story to better fit a given audience",value = "",outputKey = "") String editStory(@V("story") String story, @V("audience") String audience);name值为空,则Agent名字未editStory.
3、使用该
AgenticServices.agentBuilder()方法构建该代理实例,指定接口和聊天模型。
CreativeWriter creativeWriter = AgenticServices .agentBuilder(CreativeWriter.class) .chatModel(myChatModel) .outputKey("story") .build();4、AI service与 agent的区别
区别1: 本质上 agents = 多个AI services + 多个other agents
区别2: 用于指定共享变量的名称,代理调用的结果将存储在该变量中,以便同一代理系统内的其他代理使用。 输出名称也可以直接在 @Agent 注释中声明。比如:
@Agent(outputKey = "story", description = "Generates a story based on the given topic")注:AgenticServices 类提供了一组静态工厂方法,用于创建和定义由 langchain4j-agentic 框架提供的各种代理。
5、AgenticScope存储共享变量(多个agent直接交互)
AgenticScope 还会自动注册其他相关信息,如所有代理的调用顺序及其响应。当调用代理系统的主智能体时,会自动创建,并在必要时通过回调程序提供
6、工作流Workflow模式,这些模式可以组合起来,创造更复杂的工作流程。
- Sequential workflow 顺序工作流
每个代理的输出作为输入传递给下一个代理。
适用场景: 当你需要按特定顺序完成一系列任务时
比如 : 针对特定受众编写一个故事
public interface AudienceEditor { @UserMessage(""" You are a professional editor. Analyze and rewrite the following story to better align with the target audience of { {audience}}. Return only the story and nothing else. The story is "{ {story}}". """) @Agent("Edits a story to better fit a given audience") String editStory(@V("story") String story, @V("audience") String audience); }针对特定风格编写一个故事
public interface StyleEditor { @UserMessage(""" You are a professional editor. Analyze and rewrite the following story to better fit and be more coherent with the { {style}} style. Return only the