langchain4j实现性格分类

langchain4j实现性格分类

起男 19 2025-05-01

langchain4j实现性格分类

LangChain4j框架通过TextClassifier接口,结合向量模型,为我们提供了实现性格特征匹配的强大工具

定义性格枚举

public enum PersonalityTrait {
    /**
     * 外向型:喜欢社交,从与他人互动中获得能量
     */
    EXTROVERT,

    /**
     * 内向型:倾向于独处,需要安静时间来恢复能量
     */
    INTROVERT,

    /**
     * 分析型:擅长逻辑思考,喜欢解决复杂问题
     */
    ANALYTICAL,

    /**
     * 创意型:富有想象力,常有新颖的想法
     */
    CREATIVE,

    /**
     * 领导型:善于指导他人,乐于承担责任
     */
    LEADER,

    /**
     * 团队合作型:重视协作,善于在团队中工作
     */
    TEAM_PLAYER
}

定义性格数据

public class PersonalityTraitExamples {
    public static final Map<PersonalityTrait, List<String>> examples = Map.of(
            PersonalityTrait.EXTROVERT, List.of(
                    "我喜欢结识新朋友",
                    "团体活动让我充满活力",
                    "我经常是聚会的焦点",
                    "我喜欢在热闹的社交环境中工作"
            ),
            PersonalityTrait.INTROVERT, List.of(
                    "我更喜欢独自工作",
                    "我需要安静的时间来充电",
                    "大型社交聚会让我感到压抑",
                    "我喜欢深入的一对一谈话"
            ),
            PersonalityTrait.ANALYTICAL, List.of(
                    "我喜欢解决复杂的问题",
                    "数据驱动的决策至关重要",
                    "我总是寻找信息中的模式和联系",
                    "我倾向于在采取行动之前彻底分析情况"
            ),
            PersonalityTrait.CREATIVE, List.of(
                    "我常常跳出框架思考",
                    "我总是想出新的点子",
                    "我喜欢寻找创新的解决方案",
                    "我受到周围艺术和美的启发"
            ),
            PersonalityTrait.LEADER, List.of(
                    "我能自信地领导项目",
                    "我激励他人实现目标",
                    "我喜欢指导和培养团队成员",
                    "我不怕做出艰难的决定"
            ),
            PersonalityTrait.TEAM_PLAYER, List.of(
                    "合作是成功的关键",
                    "我重视所有团队成员的意见",
                    "我总是愿意帮助我的同事",
                    "我相信团队中多样化视角的力量"
            )
    );
}

配置分类器

    @Bean
    public EmbeddingModelTextClassifier<PersonalityTrait> textClassifier(EmbeddingModel embeddingModel) {
        return new EmbeddingModelTextClassifier<>(embeddingModel, PersonalityTraitExamples.examples);
    }

测试

    @Autowired
    private EmbeddingModelTextClassifier<PersonalityTrait> textClassifier;

    @Test
    void test01(){
        List<PersonalityTrait> classify = textClassifier.classify("我喜欢社交,我能自信地领导项目,我喜欢解决复杂的问题");
        System.out.println(classify);
    }