作者: richardmiao

  • 1.1.3 金融机构信用评估系统中的业务数据审核流程设计

    某金融机构计划引入智能信用评估系统,通过分析客户的历史交易数据和信用记录,使用机器学习算法预测客户的信用风险等级,从而辅助贷款审批和风险控制。为了确保数据的准确性和可靠性,该机构需要设计并实现一套全面的业务数据审核流程,确保数据在进入信用评估系统之前经过严格的审核和清洗。

    我们提供一个客户信用数据集(credit_data.csv),包含以下字段:

    CustomerID: 客户ID

    Name: 客户姓名

    Age: 年龄

    Income: 收入

    LoanAmount: 贷款金额

    LoanTerm: 贷款期限(月)

    CreditScore: 信用评分

    Default: 是否违约(0: 否,1: 是)

    TransactionHistory: 历史交易记录(JSON格式)

    1. 数据完整性审核:检查数据集中的每个字段是否存在缺失值和重复值。将上述审核结果截图以jpg的格式保存,命名为“1.1.3-1”。
    2. 数据合理性审核:对不合理的数据进行标记,并将审核结果截图以jpg的格式保存,命名为“1.1.3-2”。
      • 年龄:应在18到70岁之间。
      • 收入:应大于2000。
      • 贷款金额:应小于收入的5倍。
      • 信用评分:应在300到850之间。
    3. 对数据进行清洗,处理异常值。具体要求如下:将不合理的数据进行标记,并对异常值所在行进行删除;清洗后的数据保存为新文件cleaned_credit_data.csv。
    import pandas as pd
    import numpy as np
    # import matplotlib.pyplot as plt
    # 读取数据集
    data = pd.read_csv('credit_data.csv')
    
    # 1. 数据完整性审核
    missing_values = data.isnull().sum()     #数据缺失值统计 2分
    duplicate_values = data.duplicated().sum()     #数据重复值统计 2分
    # 输出结果
    print("缺失值统计:")
    print(missing_values)
    print("重复值统计:")
    print(duplicate_values)
    
    # 2. 数据合理性审核
    data['is_age_valid'] = data['Age'].between(18, 70)              #Age数据的合理性审核 2分
    data['is_income_valid'] = data['Income'] > 2000                 #Income数据的合理性审核 2分
    data['is_loan_amount_valid'] = data['LoanAmount'] < (data['Income'] * 5)      #LoanAmount数据的合理性审核 2分
    data['is_credit_score_valid'] = data['CreditScore'].between(300, 850)   #CreditScore数据的合理性审核 2分
    # 合理性检查结果
    validity_checks = data[['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid']].all(axis=1)
    data['is_valid'] = validity_checks
    # 输出结果
    print("数据合理性检查:")
    print(data[['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid', 'is_valid']].describe())
    
    # 3. 数据清洗和异常值处理
    # 标记不合理数据
    invalid_rows = data[~data['is_valid']]
    # 删除不合理数据行
    cleaned_data = data[data['is_valid']]
    # 删除标记列
    cleaned_data = cleaned_data.drop(columns=['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid', 'is_valid'])
    # 保存清洗后的数据
    cleaned_data.to_csv('cleaned_credit_data.csv', index=False)
    print("数据清洗完成,已保存为 'cleaned_credit_data.csv'")

  • 1.1.2 智能农业系统中的业务数据采集和处理流程设计

    某农业公司计划引入智能农业系统,通过安装在农田中的各种传感器(如温度传感器、湿度传感器、土壤传感器等)实时监控农田环境,收集数据并进行分析,以优化作物管理和提高产量。

    传感器数据集(sensor_data.csv),包含以下字段:

    SensorID: 传感器ID

    Timestamp: 时间戳

    SensorType: 传感器类型(Temperature温度, Humidity湿度, SoilMoisture土壤水分, SoilPH土壤酸碱度, Light光传感器)

    Value: 传感器读数

    Location: 传感器安装位置:

    1. 分别统计每种传感器的数据数量和平均值。将上述统计结果截图以jpg的格式保存,命名为“1.1.2-1”。
    2. 统计每个位置的温度和湿度传感器数据的平均值。将上述统计结果截图以jpg的格式保存,命名为“1.1.2-2”。
    3. 对数据进行清洗,处理异常值。具体要求如下:
      • 将明显异常的温度(< -10 或 > 50)和湿度(< 0 或 > 100)数据进行标记并统计。
      • 对缺失值使用前面数据的值(如果前面值没有采用后面数据的值)进行填补。
      • 将清洗后的数据保存为新文件cleaned_sensor_data.csv。
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    # 读取数据集 2分
    data = pd.read_csv('sensor_data.csv')
    
    # 1. 传感器数据统计
    # 对传感器类型进行分组,并计算每个组的数据数量和平均值 3分
    sensor_stats = data.groupby('SensorType')['Value'].agg(['count', 'mean'])
    # 输出结果
    print("传感器数据数量和平均值:")
    print(sensor_stats)
    
    # 2. 按位置统计温度和湿度数据
    # 筛选出温度和湿度数据,然后按位置和传感器类型分组,计算每个组的平均值 2分
    location_stats = data[data['SensorType'].isin(['Temperature','Humidity'])].groupby(['Location', 'SensorType'])['Value'].mean().unstack()
    # 输出结果
    print("每个位置的温度和湿度数据平均值:")
    print(location_stats)
    
    # 3. 数据清洗和异常值处理
    # 标记异常值 3分
    data['is_abnormal'] = np.where(
        ((data['SensorType'] == 'Temperature') & ((data['Value'] < -10) | (data['Value'] > 50))) |
        ((data['SensorType'] == 'Humidity') & ((data['Value'] < 0) | (data['Value'] > 100))),
        True, False
    )
    # 输出异常值数量 2分
    print("异常值数量:", data['is_abnormal'].sum())
    # 填补缺失值
    # 使用前向填充和后向填充的方法填补缺失值 4分
    data['Value'].ffill(limit=1, inplace=True)
    data['Value'].bfill(limit=1, inplace=True)
    # 保存清洗后的数据
    # 删除用于标记异常值的列,并将清洗后的数据保存到新的CSV文件中 4分
    cleaned_data = data.drop(columns=['is_abnormal'])
    cleaned_data.to_csv('cleaned_sensor_data.csv', index=False)
    print("数据清洗完成,已保存为 'cleaned_sensor_data.csv'")

  • 1.1.1 智能医疗系统中的业务数据处理流程设计

    某医疗机构计划引入智能医疗系统,以提升诊断效率和准确性。通过分析患者的历史数据,使用机器学习算法预测患者的健康风险,从而辅助医生进行诊断和治疗。

    患者数据集(patient_data.csv),包含以下字段:

    1. 分别统计住院天数超过7天的患者数量以及其占比。这类患者被定义为高风险患者,反之为低风险患者。将上述统计结果截图以jpg的格式保存,命名为“1.1.1-1”。
    2. 统计不同BMI区间中高风险患者的比例和统计不同BMI区间中的患者数。BMI区间分类设置为:偏瘦(低于18.5),正常(18.5~23.9),超重(24.0~27.9),肥胖(28.0及以上),将上述统计结果截图以jpg的格式保存,命名为“1.1.1-2”。
    3. 统计不同年龄区间中高风险患者的比例和统计不同年龄区间中的患者数。年龄区间分类设置为:年龄区间分类设置为:≤25岁,26-35岁,36-45岁,46-55岁,56-65岁,>65岁,将上述统计结果截图以jpg的格式保存,命名为“1.1.1-3”。
    import pandas as pd
    import numpy as np
    
    # 读取数据集 1分
    data = pd.read_csv('patient_data.csv')
    
    # 1. 统计住院天数超过7天的患者数量及其占比
    # 创建新列'RiskLevel',根据住院天数判断风险等级 3分
    data['Risklevel'] = np.where(data['DaysInHospital']>7, '高风险患者', '低风险患者')
    # 统计不同风险等级的患者数量 2分
    risk_counts = data['Risklevel'].value_counts()
    # 计算高风险患者占比 1分
    high_risk_ratio = risk_counts['高风险患者'] / len(data)
    # 计算低风险患者占比 1分
    low_risk_ratio = risk_counts['低风险患者'] / len(data)
    
    # 输出结果
    print("高风险患者数量:", risk_counts['高风险患者'])
    print("低风险患者数量:", risk_counts['低风险患者'])
    print("高风险患者占比:", high_risk_ratio)
    print("低风险患者占比:", low_risk_ratio)
    
    # 2. 统计不同BMI区间中高风险患者的比例和统计不同BMI区间中的患者数
    # 定义BMI区间和标签
    bmi_bins = [0, 18.5, 24, 28, np.inf]
    bmi_labels = ['偏瘦', '正常', '超重', '肥胖']
    # 根据BMI值划分指定区间 4分
    data['BMIRange'] = pd.cut(data['BMI'], bmi_bins, labels=bmi_labels, right=False)  # 使用左闭右开区间
    # 计算每个BMI区间中高风险患者的比例 2分
    bmi_risk_rate = data.groupby('BMIRange')['Risklevel'].apply(lambda x: (x == '高风险患者').mean())
    # 统计每个BMI区间的患者数量 1分
    bmi_patient_count = data['BMIRange'].value_counts()
    
    # 输出结果
    print("BMI区间中高风险患者的比例和患者数:")
    print(bmi_risk_rate) 
    print(bmi_patient_count)
    
    # 3. 统计不同年龄区间中高风险患者的比例和统计不同年龄区间中的患者数
    # 定义年龄区间和标签
    age_bins = [0, 26, 36, 46, 56, 66, np.inf]
    age_labels = ['≤25岁', '26-35岁', '36-45岁', '46-55岁', '56-65岁', '>65岁']
    # 根据年龄值划分指定区间 4分
    data['AgeRange'] = pd.cut(data['Age'], age_bins, labels=age_labels, right=False)  # 使用左闭右开区间
    # 计算每个年龄区间中高风险患者的比例 2分
    age_risk_rate = data.groupby('AgeRange')['Risklevel'].apply(lambda x: (x == '高风险患者').mean())
    # 统计每个年龄区间的患者数量 1分
    age_patient_count = data['AgeRange'].value_counts()
    
    # 输出结果
    print("年龄区间中高风险患者的比例和患者数:")
    print(age_risk_rate) 
    print(age_patient_count) 

  • 通过Spring AI 访问本地AI model 和避坑指南

    Spring 脚手架的准备

    通过 spring initializr 在线创建 agentdemo

    下载copy到项目目录并解压,Initializr 已经创建了项目框架和下面的入口文件和配置文件

    通过VS code 自带的agent, 添加spring AI的依赖和 ollama 依赖

    这里会创建三个文件并修改pom.xml


    OllamaConfig.java 主要作用是通过OllamaChatModel 的builder构建Spring AI 的 ChatClient(类似如果是OpenAI等其他AI service,应该是相同的结构)

    ChatController 主要通过注入Chatclient 对外提供对话的RESTful 服务

    application.yml 主要定义外部model 和 swagger 等资源

    pom.xml 中添加下面两个依赖

    安装依赖并执行:

    ./mvnw clean install -U
    ./mvnw spring-boot:run


    测试效果

    坑点:
    1. Spring AI 版本, 正式版是1.0.0,是2025年五月19发布的,AI Agent 不能直接识别,使用的是1.0.0-M3, M3 不在中央仓储,在milestone里面,所以直接install 回找不到


    2. M3 版本中的ChatClient 和 正式版的构造方法不一样,M版本中的构造在正式版中不兼容,正式版参考正文截图(通过OllamaAPI 和 OllamaOptions来实现)

    @Bean
    public ChatClient chatClient() {
        OllamaChatModel ollamaChatModel = OllamaChatModel.builder()
            .baseUrl(baseUrl)
            .model(modelName)
            .build();
        return ChatClient.builder(ollamaChatModel).build();
    }
  • AI Agent 工作模式

    想借助AI 整理一下AI Agent的工作模式,结果问了豆包,元宝,Kimi, DS, 每一家的回答都不一样。
    为什么答案都不一样?
    一个应该是分类的标准不一样

    AI Agent 是不是也像人类社会的分工一样,有不同的工作模式,而人类的工作模式何其之多。

    明确分类标准之后DS的答案就合理得多,如下:


    下面是原始的回答(有点乱):
    豆包的回答

    元宝的回答

    Kimi的回答

    DS 的回答

  • Deepseek-GPU版-本地跑起来啦!

    成功啦!

    坑点1. 是Ollama 先与GPU安装,GPU插上去之后,总是会调用CPU而不是GPU
    坑点2. 国内Ollama官方 下载的速度,绝了大部分重装的勇气

    官方安装路径: curl -fsSL https://ollama.com/install.sh | sh

    解决方法: snap 安装 (缺点是只能装到0.9.0,官方应该是0.9.2)

    sudo snap install ollama

    关于GPU内存使用:

    1.7G的是 允许的deepseek-r1:1.5b的模型

    6.7G的是deepseek-r1:8B的模型

    速度真的快

    https://msw.mba/

  • 数据库主从一致的实现方法

    数据库集群架构一般如下

    一主多从

    主从同步

    读写分离

    主从同步有延时,就可能读到脏数据

    解决方案有四种

    1. 忽略,如果业务上能接受
    2. 半同步复制,主库写数据之后,等待binlog 同步之后才返回请求,但是明显写请求延时会增加
    3. 强制读主, 强大的主库 + 缓存, 从库只用来进行数据备份
    4. 选择性读主库,写的时候,把库+表+key 写到缓存,超时设置为数据同步时长,查询的时候先查这个组合是否在写,如果在写,则强制读主库,否则可以读从库。

  • 通用提示词框架

    七大核心维度

    Role(角色) – Task(任务) – Tone(语气) – Context(背景) – Format(输出格式) – Criteria(验收) – Iteration(迭代方向)

    角色- Role: 明确 AI 在交互中的身份设定,决定输出的专业立场与行为模式

    • 关键作用
      • 约束 AI 的知识调用范围(如「医学顾问」需遵循循证医学标准)
      • 规范表达风格(如「营销文案写手」需使用煽动性语言)
    • 常见角色模板:角色类型典型场景核心要求领域专家学术研究、技术方案设计严谨术语、数据支撑创意顾问广告文案、故事创作想象力、修辞多样性问题解决者故障排查、决策建议逻辑链条、备选方案优先级教育者知识科普、习题解析循序渐进、类比说明
    • 示例:「你是一位专注于新能源领域的投资分析师」
    任务目标(Task)用可量化的标准描述 AI 需要完成的具体工作
    • 黄金法则
      1. 动词开头:使用「分析」「生成」「优化」等明确动作词
      2. 结果可验证:避免「提供有用信息」,改为「列出 3 个可行性方案」
      3. 复杂度分层:对多阶段任务使用「首先… 其次… 最终…」
    • 错误与正确对比
      • 模糊任务:「帮我写篇营销文案」
      • 精准任务:「生成 3 条针对 25-35 岁女性的护肤品朋友圈文案,每条包含痛点场景 + 产品卖点 + 行动指令,风格需年轻化、有共鸣」
    语气风格(Tone)设定输出内容的情感色彩与表达口吻
    • 维度分解
      • 正式程度:从「学术严谨」到「口语化闲聊」
      • 情感倾向:积极 / 中立 / 批判性
      • 表达力度:温和建议 / 强烈说服 / 幽默调侃
    • 场景化匹配示例:应用场景推荐语气禁忌风格企业年报摘要客观中立、数据导向夸张修辞、主观评价社交媒体互动亲切活泼、表情符号辅助专业术语堆砌危机公关声明诚恳致歉、解决方案导向模糊其辞、推卸责任
    背景信息(Context)提供任务相关的历史数据、约束条件或上下文场景
    • 信息分层策略
      1. 基础层:必要前提(如「基于 2024 年中国新能源汽车销量数据」)
      2. 限制层:边界条件(如「预算不超过 50 万元」)
      3. 启发层:参考案例(如「风格参考《流浪地球》的科技感描述」)
    • 案例:“你需要为一家连锁咖啡店设计新品推广方案。背景:品牌主打「第三空间」概念,目标客群为 25-40 岁都市白领,2024 年同类产品均价 38 元,本次新品成本较传统咖啡高 20%。”
    输出格式(Format)指定结果的呈现形式,提升信息可读性
    • 常用格式类型
      • 结构化:表格、清单、流程图
      • 创意化:诗歌、对话体、分镜脚本
      • 学术化:SWOT 分析、PEST 模型、参考文献格式
    • 示例:“请以思维导图形式呈现营销策略,包含目标人群、渠道选择、促销活动 3 个主分支,每个分支下至少展开 2 个子节点。”
    评估标准(Criteria)设立结果验收的量化指标
    • 设计方法
      • 数量指标:「生成不少于 5 个方案」
      • 质量指标:「方案需通过 ROI>1.5 的筛选」
      • 合规指标:「内容需符合广告法第 9 条规定」
    • 应用场景:“方案需满足:① 线上转化率提升 20% 以上;② 预算控制在推广费用的 30% 以内;③ 不得使用「最」「第一」等极限词。”
    迭代指令(Iteration)引导 AI 进行多轮优化的提示
    • 典型用法
      • 正向迭代:「在方案二的基础上增加线下渠道拓展建议」
      • 负向迭代:「删除所有涉及明星代言的内容」
      • 对比迭代:「生成 A 版本(保守型)和 B 版本(激进型)两个方案」

    高质量提示词的黄金写作法则 – 六大法则

    金字塔法则:从宏观到细节分层构建
    1. 顶层:角色与任务(如「你是电商运营专家,需优化店铺首页」)
    2. 中层:背景与约束(「店铺主营母婴用品,客单价 200-500 元,转化率低于行业均值 15%」)
    3. 底层:格式与标准(「以 PPT 大纲形式呈现,包含流量入口优化、信任背书设计、促销模块重组 3 个部分」)
    具体化法则:消除所有模糊表述
    • 错误示范:「写一篇关于人工智能的文章」
    • 优化版本:“撰写一篇面向企业管理者的 AI 趋势分析文章,需包含:
      1. 2024 年 AI 在供应链管理中的 3 个落地案例;
      2. 中小企业部署 AI 的成本效益分析(附数据图表);
      3. 未来 2 年 AI 对管理决策的潜在冲击预测;
        风格要求:专业但非技术化,每 200 字插入 1 个类比说明。”
    示例锚定法则:用案例降低理解偏差
    • 应用场景:当涉及主观判断(如「年轻化设计」「科技感」)时
    • 模板:“参考以下示例的风格进行创作:
      [示例 1] 原句:传统咖啡机操作复杂 → 改写:一键搞定,小白也能当咖啡师
      [示例 2] 原句:产品性能稳定 → 改写:7×24 小时不间断运行,零故障记录
      请按照上述「痛点场景 + 解决方案」的结构,改写剩余 10 条产品描述。”
    约束 – 自由平衡法则:在限制中激发创造力
    • 双向设计
      • 约束项:「预算不超过 10 万元」「必须使用现有物流体系」
      • 创新项:「探索 3 种非传统营销渠道」「提出颠覆行业的定价模型」
    • 案例:“在不增加研发预算的前提下,设计 3 种能使产品故障率降低 50% 的改进方案,允许突破现有材料体系,但需符合 ISO9001 认证标准。”
    多轮引导法则:分阶段控制思考深度
    1. 首轮:广度探索(「列出 10 个可能的市场拓展方向」)
    2. 次轮:深度挖掘(「针对方向三,分析其政策风险与消费者接受度」)
    3. 终轮:方案成型(「基于以上分析,生成详细执行计划,包含时间表与 KPI」)
    反馈校准法则:建立结果验收机制
    • 验收框架
      1. 事实性校验:「数据来源是否标注清楚?」
      2. 逻辑性校验:「因果推导是否存在跳跃?」
      3. 需求匹配度:「是否解决了最初提出的 3 个核心问题?」
    • 示例:“请检查方案是否满足:
      √ 包含 3 个以上可量化的执行指标
      √ 每个策略都有对应的风险预案
      √ 引用至少 2 篇 2024 年的行业报告作为依据”

    跨场景提示词框架应用实例

    学术研究场景
    角色:你是经济学领域的文献综述专家
    任务:撰写「数字经济对就业市场影响」的文献综述框架
    背景:已收集2019-2024年中英文文献50篇,重点关注中国市场
    语气:严谨客观,采用学术规范表述
    输出格式:思维导图(需包含理论基础、影响机制、争议焦点、研究空白4个主模块)
    评估标准:框架需覆盖至少80%已收集文献的研究视角,争议焦点部分需列出至少3种对立观点
    迭代指令:完成后请补充「政策建议」子模块,并标注每个建议对应的理论依据
    商业策划场景
    角色:你是新零售业态创新顾问
    任务:为传统超市设计数字化转型方案
    背景:超市位于二线城市核心商圈,面积2000㎡,目标客群年龄35-55岁,2023年线上订单占比仅8%
    语气:务实可行,突出投入产出比
    输出格式:PPT提案(包含现状分析、改造方案、投资回报表3个部分)
    评估标准:方案需实现线上订单占比提升至30%,改造成本控制在500万元以内
    迭代指令:先提交3个方向的创意简报,经筛选后再展开详细方案
    
    创意写作场景
    角色:你是科幻小说作家,擅长硬科幻与社会伦理结合的题材
    任务:创作一个关于「记忆移植技术」的短篇故事开头
    背景:设定在2045年的智慧城市,记忆移植已成为治疗心理创伤的常规手段,但存在伦理争议
    语气:冷峻细腻,兼具科技质感与人文关怀
    输出格式:小说片段(300-500字),需包含场景描写、主角心理活动、技术细节暗示
    评估标准:需在开头50字内建立世界观悬念,技术描述需符合认知科学基本原理
    迭代指令:提供A版本(主角接受记忆移植)和B版本(主角拒绝移植)两个开头
    

    提示词优化迭代流程

    1. 初始提示词:基于框架完成基础构建
    2. 首轮输出:记录 AI 响应中的偏差点(如信息遗漏、格式错误)
    3. 问题归类:区分「角色错位」「任务模糊」「约束缺失」等问题类型
    4. 针对性优化:补充缺失要素或调整描述方式
    5. 对比测试:使用 A/B 测试验证不同提示词版本的效果
    6. 经验沉淀:建立提示词模板库,按场景分类存储

  • AI 提示词优化的CREATE 框架

    反事实推理是Deepseek 的核心技术之一, 通过构建与事实相反的假设性情景,来探索因果关系和潜在结果的逻辑推理方法。

    反事实推理有着严密的数学模型,基于因果推断三层次模型,由美国计算机科学家 Pearl 提出。

    因果推断三层次分别为关联、干预和反事实。

    关联层关注条件概率,能发现变量间相关性,但无法确定因果性;

    干预层关注主动干预某一变量后对结果的影响;

    反事实层则研究假设性问题,关注如果采取了不同的行动,结果会如何,会用到结构因果建模、反事实计算、可识别性分析等知识。

    参考deepseek 的反事实推理的逻辑,我们来看CREATE 框架

    Contrast: 要求多方案比较

    Risk Aware: 要求评估潜在风险

    Experimental: 要求假设推演

    Alternative: 要求备选方案

    Trade off: 要求分析优缺点

    Explain: 要求说明决策逻辑