【Azure 架构师学习笔记 】- Azure AI(15)-Azure OpenAI(6)-Azure OpenAI 交互式工作助手

本文属于【Azure 架构师学习笔记】系列

本文属于【Azure AI】系列

接上文 【Azure 架构师学习笔记 】- Azure AI(14)-Azure OpenAI(5)-OpenAI 智能文本处理小工具

前言

本文是上一篇"多格式文本处理工具"的进阶升级,聚焦职场「场景化交互+实用功能落地」,基于Azure OpenAI打造一款交互式工作助手。工具仍保持纯单Python文件运行,在保留多格式文本处理核心能力的基础上,新增三大实用升级:上下文记忆功能(支持多轮追问)、自定义提示词模板(适配个性化职场场景)、处理结果导出(直接保存为文档复用),逐步从"批量工具"向"个人AI助手"过渡。

工具核心价值:

  • 交互更友好:命令行交互式升级,支持多轮对话追问,贴合日常沟通习惯;
  • 个性化适配:可自定义提示词模板(如需求分析、面试反馈、周报生成),适配不同岗位需求;
  • 复用性更强:处理结果可导出为TXT/Word/Excel,直接应用到工作文档中;
  • 衔接性强:复用前序Azure OpenAI配置、提示工程、多格式处理逻辑,无新增学习成本。

适用人群:已掌握第一篇工具实操,希望提升工具交互体验、增加实用功能,逐步搭建个人AI工作助手的职场人士。

一、环境准备(前置条件)

完全复用上一篇的环境,无需额外配置,仅补充1个可选依赖(用于结果导出优化):

  1. 基础环境:已安装Python 3.8+,且已完成第一篇的环境配置;

  2. 依赖检查:确保已安装以下库(若已安装,无需重复执行):

pip install openai python-docx openpyxl PyPDF2 --upgrade

  1. 配置准备:已获取Azure OpenAI的azure_endpointapi_keyDEPLOYMENT_NAME

二、实操

python 复制代码
# Azure OpenAI 交互式工作助手(进阶版)
# 核心升级:多轮记忆+自定义模板+结果导出,支持TXT/Word/Excel/PDF多格式处理
from openai import AzureOpenAI
import os
from docx import Document
import openpyxl
import PyPDF2
from datetime import datetime

# ===================== 基础配置(替换为你的信息,复用第一篇) =====================
client = AzureOpenAI(
    azure_endpoint="https://你的资源名.openai.azure.com/",
    api_key="你的Key",
    api_version="2024-08-01-preview"
)
DEPLOYMENT_NAME = "你的部署名"

# ===================== 新增:自定义提示词模板(可按需修改,适配职场场景) =====================
# 模板格式:{模板名: 提示词内容},可新增自己岗位常用的模板
PROMPT_TEMPLATES = {
    "会议纪要总结": "你是专业的职场会议纪要总结助手,总结需包含「会议主题、核心结论、行动项、责任人、截止时间」,语言简洁正式,控制在200字内,无冗余内容。",
    "需求信息提取": "你是职场需求分析专家,从文本中提取「需求名称、核心诉求、优先级、责任人、风险点、截止时间」,无则标注「无」,分点清晰,适配Excel导入格式。",
    "面试反馈整理": "你是HR面试辅助助手,整理面试反馈需包含「候选人姓名、岗位、核心优势、不足、面试结论、下一步安排」,语言客观,格式标准化,可直接复制到面试记录表。",
    "周报生成": "你是职场周报助手,根据日常工作文本,生成「本周工作内容、完成情况、遇到的问题、下周计划」四大模块,语言简洁,贴合职场周报规范。",
    "自定义模板": "你是职场文本处理助手,按用户自定义的要求处理文本,确保输出贴合需求、格式规范。"
}

# ===================== 核心功能函数(升级:新增记忆、模板、导出) =====================
def get_prompt_by_template(template_name, custom_prompt=""):
    """根据模板名称获取提示词,支持自定义模板"""
    if template_name == "自定义模板" and custom_prompt:
        return custom_prompt
    return PROMPT_TEMPLATES.get(template_name, PROMPT_TEMPLATES["会议纪要总结"])

def process_text(text, prompt_template="会议纪要总结", custom_prompt="", temperature=0.2):
    """
    核心文本处理:支持模板选择+自定义提示词,输出结果+费用
    :param text: 待处理文本
    :param prompt_template: 提示词模板名称
    :param custom_prompt: 自定义提示词(仅模板为"自定义模板"时生效)
    :param temperature: 输出随机性(0-1,越小越稳定)
    :return: 处理结果 + 单次费用
    """
    system_prompt = get_prompt_by_template(prompt_template, custom_prompt)
    try:
        response = client.chat.completions.create(
            model=DEPLOYMENT_NAME,
            messages=[{"role": "system", "content": system_prompt},
                     {"role": "user", "content": f"请按要求处理以下文本:\n{text}"}],
            temperature=temperature
        )
        # 费用计算(复用第一篇逻辑,精准监控)
        prompt_tokens = response.usage.prompt_tokens
        completion_tokens = response.usage.completion_tokens
        cost = (prompt_tokens / 1000 * 0.00015) + (completion_tokens / 1000 * 0.0006)
        return response.choices[0].message.content.strip(), round(cost, 6)
    except Exception as e:
        return f"处理失败:{str(e)}", 0

def export_result(result, export_format="txt", file_name="处理结果"):
    """
    新增:结果导出功能,支持TXT/Word/Excel三种格式
    :param result: 待导出的处理结果
    :param export_format: 导出格式(txt/word/excel)
    :param file_name: 导出文件名(无需加后缀)
    :return: 导出结果提示(成功/失败)
    """
    # 生成带时间戳的文件名,避免覆盖
    time_str = datetime.now().strftime("%Y%m%d%H%M%S")
    file_path = f"{file_name}_{time_str}.{export_format}"
    try:
        if export_format == "txt":
            with open(file_path, "w", encoding="utf-8") as f:
                f.write(result)
        elif export_format == "word":
            doc = Document()
            doc.add_heading("OpenAI 处理结果", level=1)
            doc.add_paragraph(result)
            doc.save(file_path)
        elif export_format == "excel":
            wb = openpyxl.Workbook()
            ws = wb.active
            ws.title = "处理结果"
            # 按行拆分结果,写入Excel(适配批量处理结果)
            lines = result.split("\n")
            for row_idx, line in enumerate(lines, start=1):
                ws.cell(row=row_idx, column=1, value=line)
            wb.save(file_path)
        else:
            return f"不支持的导出格式:{export_format}"
        return f"结果已成功导出,路径:{os.path.abspath(file_path)}"
    except Exception as e:
        return f"导出失败:{str(e)}"

# ===================== 多格式处理函数(复用第一篇,优化异常处理) =====================
def process_txt(file_path, prompt_template="会议纪要总结", custom_prompt=""):
    if not os.path.exists(file_path):
        return "文件不存在,请检查路径", 0
    total_cost = 0
    results = []
    with open(file_path, "r", encoding="utf-8") as f:
        lines = [line.strip() for line in f.readlines() if line.strip()]
    for idx, line in enumerate(lines):
        print(f"\n正在处理TXT第{idx+1}条文本...")
        result, cost = process_text(line, prompt_template, custom_prompt)
        total_cost += cost
        results.append(f"【TXT第{idx+1}条】\n处理结果:{result}\n单次费用:${cost}\n")
    summary = f"\n===== TXT处理完成 =====\n共处理{len(results)}条有效文本,总费用:${total_cost:.6f}\n"
    return "\n".join(results + [summary]), total_cost

def process_word(file_path, prompt_template="会议纪要总结", custom_prompt=""):
    if not os.path.exists(file_path) or not file_path.endswith(".docx"):
        return "文件不存在或非.docx格式", 0
    try:
        doc = Document(file_path)
        full_text = "\n".join([para.text.strip() for para in doc.paragraphs if para.text.strip()])
        if not full_text:
            return "Word文档无有效文本内容", 0
        print("\n正在处理Word文档...")
        result, cost = process_text(full_text, prompt_template, custom_prompt)
        summary = f"\n===== Word处理完成 =====\n文档路径:{file_path}\n处理结果:\n{result}\n总费用:${cost:.6f}\n"
        return summary, cost
    except Exception as e:
        return f"Word处理失败:{str(e)}", 0

def process_excel(file_path, sheet_name="Sheet1", col_index=0, prompt_template="会议纪要总结", custom_prompt=""):
    if not os.path.exists(file_path) or not file_path.endswith(".xlsx"):
        return "文件不存在或非.xlsx格式", 0
    try:
        wb = openpyxl.load_workbook(file_path)
        ws = wb[sheet_name] if sheet_name in wb.sheetnames else wb.active
        total_cost = 0
        results = []
        for row_idx, row in enumerate(ws.iter_rows(min_row=2, min_col=col_index+1, max_col=col_index+1, values_only=True)):
            cell_text = row[0]
            if not cell_text or not isinstance(cell_text, str):
                continue
            print(f"\n正在处理Excel第{row_idx+2}行文本...")
            result, cost = process_text(str(cell_text), prompt_template, custom_prompt)
            total_cost += cost
            results.append(f"【Excel第{row_idx+2}行】\n处理结果:{result}\n单次费用:${cost}\n")
        wb.close()
        summary = f"\n===== Excel处理完成 =====\n共处理{len(results)}行有效文本,总费用:${total_cost:.6f}\n"
        return "\n".join(results + [summary]), total_cost
    except Exception as e:
        return f"Excel处理失败:{str(e)}", 0

def process_pdf(file_path, prompt_template="会议纪要总结", custom_prompt=""):
    if not os.path.exists(file_path) or not file_path.endswith(".pdf"):
        return "文件不存在或非.pdf格式", 0
    try:
        with open(file_path, "rb") as f:
            pdf_reader = PyPDF2.PdfReader(f)
            full_text = ""
            for page_num in range(len(pdf_reader.pages)):
                page = pdf_reader.pages[page_num]
                page_text = page.extract_text()
                if page_text:
                    full_text += page_text.strip() + "\n"
        if not full_text:
            return "PDF文档无可提取的文本(可能是图片型PDF)", 0
        print("\n正在处理PDF文档...")
        result, cost = process_text(full_text, prompt_template, custom_prompt)
        summary = f"\n===== PDF处理完成 =====\n文档路径:{file_path}\n处理结果:\n{result}\n总费用:${cost:.6f}\n"
        return summary, cost
    except Exception as e:
        return f"PDF处理失败:{str(e)}", 0

# ===================== 新增:多轮记忆交互函数 =====================
def memory_interaction():
    """多轮对话交互,支持上下文记忆,贴合日常沟通场景"""
    print("\n===== 多轮记忆交互模式 =====")
    print("提示:输入「退出」可结束交互,输入「清空记忆」可重置上下文,输入「导出」可保存当前所有结果\n")
    # 上下文记忆列表,存储历史对话(system+user+assistant)
    messages = [{"role": "system", "content": "你是专业的职场AI助手,能记住上下文对话内容,回答贴合职场场景,简洁实用。"}]
    total_cost = 0
    all_results = []  # 存储所有交互结果,用于导出

    while True:
        user_input = input("你:")
        if user_input.strip() == "退出":
            summary = f"\n===== 交互结束 =====\n共产生费用:${total_cost:.6f}\n"
            all_results.append(summary)
            print(summary)
            break
        elif user_input.strip() == "清空记忆":
            messages = [{"role": "system", "content": "你是专业的职场AI助手,能记住上下文对话内容,回答贴合职场场景,简洁实用。"}]
            all_results = []
            print("助手:记忆已清空,可重新开始交互\n")
            continue
        elif user_input.strip() == "导出":
            if not all_results:
                print("助手:暂无可导出的结果\n")
                continue
            export_format = input("请选择导出格式(txt/word/excel):") or "txt"
            file_name = input("请输入导出文件名(无需加后缀):") or "多轮交互结果"
            export_msg = export_result("\n".join(all_results), export_format, file_name)
            print(f"助手:{export_msg}\n")
            continue

        # 新增用户输入到上下文
        messages.append({"role": "user", "content": user_input})
        try:
            response = client.chat.completions.create(
                model=DEPLOYMENT_NAME,
                messages=messages,
                temperature=0.3
            )
            # 计算费用并累计
            prompt_tokens = response.usage.prompt_tokens
            completion_tokens = response.usage.completion_tokens
            cost = (prompt_tokens / 1000 * 0.00015) + (completion_tokens / 1000 * 0.0006)
            total_cost += cost
            response_content = response.choices[0].message.content.strip()
            # 新增助手回复到上下文和结果列表
            messages.append({"role": "assistant", "content": response_content})
            all_results.append(f"你:{user_input}\n助手:{response_content}\n费用:${cost}")
            # 输出回复
            print(f"助手:{response_content}\n(本次费用:${cost},累计费用:${total_cost:.6f})\n")
        except Exception as e:
            error_msg = f"处理失败:{str(e)}"
            print(f"助手:{error_msg}\n")
            all_results.append(f"你:{user_input}\n助手:{error_msg}\n费用:$0")

# ===================== 主程序(升级:多模式交互,新手友好) =====================
if __name__ == "__main__":
    print("===== Azure OpenAI 交互式工作助手(进阶版)=====\n")
    print("支持模式:1. 多格式文件处理  2. 多轮记忆交互  3. 自定义模板处理")
    mode_choice = input("请选择使用模式(输入1/2/3):")

    # 1. 多格式文件处理(复用第一篇,新增模板选择)
    if mode_choice == "1":
        print("\n===== 多格式文件处理 =====")
        print("支持格式:1.TXT  2.Word(.docx)  3.Excel(.xlsx)  4.PDF")
        format_choice = input("请选择待处理文件格式(输入1/2/3/4):")
        
        # 选择提示词模板
        print("\n支持模板:")
        for idx, template in enumerate(PROMPT_TEMPLATES.keys(), start=1):
            print(f"{idx}. {template}")
        template_choice = input("请选择提示词模板(输入序号):") or "1"
        template_name = list(PROMPT_TEMPLATES.keys())[int(template_choice)-1]
        custom_prompt = ""
        if template_name == "自定义模板":
            custom_prompt = input("请输入自定义提示词:")
        
        # 执行对应格式处理
        if format_choice == "1":
            file_path = input("请输入TXT文件完整路径:")
            result, _ = process_txt(file_path, template_name, custom_prompt)
        elif format_choice == "2":
            file_path = input("请输入Word文件完整路径:")
            result, _ = process_word(file_path, template_name, custom_prompt)
        elif format_choice == "3":
            file_path = input("请输入Excel文件完整路径:")
            sheet_name = input("请输入工作表名称(默认Sheet1):") or "Sheet1"
            col_index = input("请输入待处理列索引(从0开始,默认0):")
            col_index = int(col_index) if col_index.isdigit() else 0
            result, _ = process_excel(file_path, sheet_name, col_index, template_name, custom_prompt)
        elif format_choice == "4":
            file_path = input("请输入PDF文件完整路径:")
            result, _ = process_pdf(file_path, template_name, custom_prompt)
        else:
            result = "输入错误,程序退出"
        
        # 结果导出选项
        export_choice = input("\n是否导出处理结果?(y/n):")
        if export_choice.lower() == "y":
            export_format = input("请选择导出格式(txt/word/excel):") or "txt"
            file_name = input("请输入导出文件名(无需加后缀):") or "文件处理结果"
            export_msg = export_result(result, export_format, file_name)
            print(f"\n{export_msg}")
        print("\n===================== 处理结果 =====================")
        print(result)

    # 2. 多轮记忆交互(新增功能)
    elif mode_choice == "2":
        memory_interaction()

    # 3. 自定义模板处理(新增功能,适配个性化需求)
    elif mode_choice == "3":
        print("\n===== 自定义模板处理 =====")
        print("请选择处理方式:1. 输入文本  2. 上传文件")
        custom_choice = input("输入1/2:")
        template_name = "自定义模板"
        custom_prompt = input("请输入自定义提示词(明确处理要求):")
        
        if custom_choice == "1":
            text = input("请输入待处理文本:\n")
            result, cost = process_text(text, template_name, custom_prompt)
            result = f"处理结果:\n{result}\n费用:${cost}"
        elif custom_choice == "2":
            print("支持格式:TXT/Word/Excel/PDF")
            file_path = input("请输入文件完整路径:")
            if file_path.endswith(".txt"):
                result, _ = process_txt(file_path, template_name, custom_prompt)
            elif file_path.endswith(".docx"):
                result, _ = process_word(file_path, template_name, custom_prompt)
            elif file_path.endswith(".xlsx"):
                sheet_name = input("请输入工作表名称(默认Sheet1):") or "Sheet1"
                col_index = input("请输入待处理列索引(从0开始,默认0):")
                col_index = int(col_index) if col_index.isdigit() else 0
                result, _ = process_excel(file_path, sheet_name, col_index, template_name, custom_prompt)
            elif file_path.endswith(".pdf"):
                result, _ = process_pdf(file_path, template_name, custom_prompt)
            else:
                result = "不支持的文件格式"
        else:
            result = "输入错误"
        
        export_choice = input("\n是否导出处理结果?(y/n):")
        if export_choice.lower() == "y":
            export_format = input("请选择导出格式(txt/word/excel):") or "txt"
            file_name = input("请输入导出文件名(无需加后缀):") or "自定义处理结果"
            export_msg = export_result(result, export_format, file_name)
            print(f"\n{export_msg}")
        print("\n===================== 处理结果 =====================")
        print(result)

    else:
        print("输入错误,程序退出")

三、核心点详解

本篇工具在第一篇基础上,做了3大升级:

  1. 升级1:自定义提示词模板(适配个性化职场场景)

核心解决"第一篇提示词固定,无法适配不同岗位需求"的问题,新增5个常用职场模板(会议纪要总结、需求信息提取等),可直接修改、新增模板。

  • 模板位置:代码中PROMPT_TEMPLATES字典,格式为「模板名: 提示词内容」;

  • 使用方法:运行工具时,选择"模板序号"即可调用对应提示词,无需手动输入复杂提示;

  • 个性化适配:新增"自定义模板"选项,可输入自己的提示词(如"产品需求分析""技术文档翻译"),适配自身岗位。

  1. 升级2:多轮记忆交互(贴合日常沟通习惯)

核心解决"第一篇仅支持单次处理,无法多轮追问"的问题,新增"多轮记忆模式",支持上下文连贯对话,类似ChatGPT的交互体验。

  • 核心功能:记住历史对话内容,比如"先让助手总结会议纪要→再追问行动项细节→再让助手整理成表格",助手会衔接上下文;

  • 操作指令:输入「退出」结束交互,「清空记忆」重置对话,「导出」保存所有交互结果;

  • 职场价值:可用于日常工作答疑、多步骤文本处理,无需重复输入背景信息,提升沟通效率。

  1. 升级3:处理结果导出(直接落地工作文档)

核心解决"第一篇处理结果仅能在命令行查看,无法复用"的问题,新增结果导出功能,支持TXT/Word/Excel三种格式,直接保存为工作文档。

  • 导出逻辑:处理完成后,输入"y"即可选择导出格式,自动生成带时间戳的文件(避免覆盖);

  • 适配场景:批量处理的Excel结果可导出为Excel,直接粘贴到工作表格;会议纪要总结可导出为Word,直接分发;

  • 优势:无需手动复制粘贴,减少重复工作,实现"处理→导出→复用"一站式完成。

对应代码层面,核心逻辑可简单解释为:

  1. 通过定义PROMPT_TEMPLATES字典实现模板功能。
  2. 借助memory_interaction函数存储历史对话实现记忆能力。
  3. 通过export_result函数适配不同格式完成结果导出,同时复用了上一篇的多格式处理函数(process_txt/word/excel/pdf)和Azure OpenAI调用逻辑

四、分步实操演示

本次演示聚焦"新增功能",多格式文件处理的基础操作可复用第一篇,重点演示模板使用、多轮记忆、结果导出三大核心升级功能。

演示1:自定义模板使用(以"面试反馈整理"为例)

适用场景:HR批量整理面试反馈,使用模板快速生成标准化反馈内容。

  1. 准备文件:在桌面新建TXT文件面试反馈.txt,每行填写1条面试记录(示例):

    候选人:张三,岗位:AI工程师,面试表现:熟悉Azure OpenAI调用,提示工程基础较好,沟通能力强,不足:项目经验较少,结论:可安排二面。

    候选人:李四,岗位:产品经理,面试表现:需求分析能力强,了解AI工具应用,不足:对技术实现细节不熟悉,结论:录用。

  2. 运行工具:

  • 打开CMD,切换到桌面:cd C:\Users\huang\Desktop

  • 运行代码:python ai_work_assistant.py

  • 选择模式:输入1(多格式文件处理);

  • 选择格式:输入1(TXT);

  • 选择模板:输入3(面试反馈整理);

  • 输入文件路径:"C:\Users\huang\Desktop\面试反馈.txt"

  1. 导出结果:处理完成后,输入y(导出),选择格式excel,文件名输入面试反馈整理,回车即可导出Excel文件,直接用于面试记录归档。

演示2:多轮记忆交互(以"会议纪要多轮追问"为例)

适用场景:处理会议纪要时,多轮追问细节,让助手逐步完善内容。

  1. 运行工具:执行python ai_work_assistant.py,选择模式2(多轮记忆交互);

  2. 多轮交互示例:

    你:帮我总结这段会议纪要:2026.03.10项目会议,参会人:张三、李四、王五,核心内容:确定A模块开发优先级最高,责任人张三,截止3月20日;B模块延后开发,责任人李四,截止4月5日;讨论了项目风险,主要是技术人员不足。

    助手:【会议纪要总结】会议主题:2026.03.10项目会议;参会人:张三、李四、王五;核心结论:A模块优先开发(责任人张三,截止3月20日),B模块延后开发(责任人李四,截止4月5日);风险点:技术人员不足。(本次费用:0.00012,累计费用:0.00012)

你:把风险点展开说明,给出应对建议

助手:【风险点展开+应对建议】风险点:技术人员不足,可能导致A/B模块开发进度滞后,影响项目交付。应对建议:1. 协调公司内部技术人员支援;2. 短期招聘兼职技术人员;3. 优化开发流程,合理分配任务,避免人力浪费。(本次费用:0.00015,累计费用:0.00027)

你:把所有内容整理成表格格式

助手:| 项目 | 责任人 | 截止时间 | 备注 |

|------|--------|----------|------|

| A模块开发 | 张三 | 3月20日 | 优先级最高 |

| B模块开发 | 李四 | 4月5日 | 延后开发 |

| 项目风险 | - | - | 技术人员不足;应对:内部支援+兼职招聘+流程优化 |(本次费用:0.00018,累计费用:0.00045)

你:导出

助手:请选择导出格式(txt/word/excel):excel

请输入导出文件名(无需加后缀):会议纪要整理

结果已成功导出,路径:C:\Users\huang\Desktop\会议纪要整理_20260310153020.xlsx

  1. 核心优势:助手记住了所有历史对话,无需重复输入会议纪要原文,逐步完善内容,最终导出可直接复用的表格。

演示3:自定义模板+结果导出(以"产品需求分析"为例)

适用场景:产品经理处理用户反馈,自定义提示词,让助手生成标准化需求分析报告。

  1. 运行工具:执行python ai_work_assistant.py,选择模式3(自定义模板处理);

  2. 操作步骤:

  • 选择处理方式:输入1(输入文本);

  • 输入自定义提示词:"你是产品需求分析助手,从用户反馈中提取需求名称、核心诉求、目标用户、实现难度,分点输出,格式标准化,适配产品需求文档。";

  • 输入待处理文本:"用户反馈:希望系统新增批量导入数据功能,每次手动输入数据太繁琐,主要用于日常数据统计,希望操作简单,无需复杂配置。";

  • 导出结果:处理完成后,输入y,选择格式word,文件名用户需求分析,导出后可直接粘贴到产品需求文档中。

总结

本篇工具在第一篇多格式处理的基础上,聚焦"交互升级+实用落地",新增的模板、记忆、导出三大功能,均贴合职场高频需求,保持单Python文件运行,无新增学习成本。为下一篇"轻量GUI界面AI应用"做好铺垫。

后续可根据自身工作场景,进一步优化功能(如新增模板、优化导出格式),让工具更贴合个人需求。下一篇将重点升级"GUI界面",摆脱命令行操作,打造更直观、更易用的桌面版AI工作助手。

相关推荐
无忧智库6 小时前
某区“十五五”数字档案馆(室)一体化平台与安全体系建设深度解析(WORD)
人工智能·安全
發糞塗牆6 小时前
【Azure 架构师学习笔记 】- Azure AI(13)-Azure OpenAI(4)-Azure OpenAI 提示工程进阶技巧
人工智能·ai·azure
武帝为此6 小时前
【专家系统介绍】
人工智能·算法
agicall.com6 小时前
如何在固话座机通话中给对方播放预设好的语音文件或文字
人工智能·语音识别
狒狒热知识6 小时前
2026软文品牌推广行业精准适配:四大核心升级趋势:重构行业服务生态
大数据·人工智能
数说星榆1816 小时前
软件升级全流程步骤详解 在线画图工具绘制流程图教程
大数据·人工智能·架构·流程图
weixin_480641616 小时前
一款全能型 AI 设计修图工具实测:椒图 AI,Nano Banana Pro 加持,电商 / 修图 / 设计一站式解决
大数据·图像处理·人工智能·ai作画·stable diffusion·aigc·midjourney
码农三叔6 小时前
(7-4)力觉与触觉感知:多模态接触感知模型
人工智能·目标检测·机器人·人机交互·人形机器人
不懒不懒6 小时前
【OpenCV 图像处理从入门到实战:核心功能全解析】
图像处理·人工智能·opencv
一水鉴天6 小时前
“活结-活络-活扩”:一种面向数据价值升维与业务敏捷演进的系统架构元模型 20260310 之1(元宝)
人工智能·架构