news 2026/8/8 15:07:18

从零构建AI社交应用:基于大模型与Agent的陪伴系统实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零构建AI社交应用:基于大模型与Agent的陪伴系统实战

最近在技术社区和招聘网站上,一个趋势越来越明显:各大互联网公司都在加速布局AI原生应用,尤其是社交和内容领域。作为内容社区的头部玩家,小红书被曝出正在加大AI投入,重点布局AI社交方向,并开启了AI陪伴产品的自研。这不仅仅是业务新闻,更是一个强烈的技术信号,意味着对具备AI应用开发、大模型工程化、智能体(Agent)构建能力的工程师需求将迎来爆发。

对于开发者而言,这既是机遇也是挑战。机遇在于,新的技术栈和产品形态将创造大量高价值的岗位;挑战在于,从传统的Web/App开发转向AI驱动的应用开发,需要掌握一套全新的工具链和工程思维。本文将从一个一线开发者的视角,系统拆解如何从零开始,构建一个具备“AI社交”或“AI陪伴”雏形的应用原型。我们将聚焦于AI Agent开发大模型API集成对话系统设计以及工程化部署等核心环节,提供一套完整、可复现的实战方案。

1. 背景与核心概念:什么是AI社交与AI陪伴?

在深入代码之前,我们需要厘清几个关键概念,这有助于我们理解要构建的是什么。

AI社交通常指以人工智能为核心驱动力的新型社交互动模式。它不再是简单的人与人通过平台连接,而是引入了AI作为社交的参与者或增强者。例如:

  • AI角色互动:用户可以与由AI驱动的虚拟角色(如历史人物、动漫角色、自定义伴侣)进行深度、个性化的对话和互动。
  • 社交内容AI化:AI辅助用户生成更优质的社交内容(如文案、图片、视频),或智能匹配兴趣相投的用户和内容。
  • 社交体验增强:通过AI理解对话上下文和用户情绪,提供更自然的聊天建议、话题引导或情感支持。

AI陪伴是AI社交的一个核心子集,它更侧重于提供情感价值与长期陪伴感。其产品形态可能是一个独立的虚拟伙伴App,或嵌入在现有社交产品中的功能模块。关键技术点在于让AI具备长期记忆一致的人设情感理解与回应以及多模态交互(文字、语音、图像)能力。

从技术实现上看,这类应用的核心是“大模型 + Agent(智能体)”架构。

  • 大模型(LLM):如GPT-4、Claude、文心一言、通义千问等,提供强大的自然语言理解和生成能力,是AI的“大脑”。
  • Agent(智能体):一个可以感知环境(用户输入)、进行思考(调用工具、检索记忆)、做出决策(生成回复、执行动作)并持续学习的软件实体。它围绕大模型构建,负责处理复杂的交互逻辑。

我们接下来的实战,就将围绕构建一个简单的、具有记忆和人设的对话型AI Agent展开。

2. 环境准备与版本说明

我们将使用Python作为主要开发语言,这是目前AI应用开发最活跃的生态。项目将基于LangChain框架,它是一个用于开发由大语言模型驱动的应用程序的流行框架,能极大简化Agent、记忆、工具链的构建过程。

基础环境:

  • 操作系统:macOS / Linux (推荐) 或 Windows (WSL2)
  • Python版本:>= 3.9
  • 包管理工具:pip 或 conda

核心依赖库及版本(建议):我们将创建一个requirements.txt文件来管理依赖。

# requirements.txt langchain==0.1.0 langchain-community==0.0.10 # 社区工具和集成 langchain-openai==0.0.5 # OpenAI官方集成 openai>=1.0.0 # OpenAI Python SDK chromadb==0.4.22 # 向量数据库,用于记忆存储 tiktoken # OpenAI token计数 python-dotenv # 管理环境变量 fastapi>=0.104.0 # 构建API服务 uvicorn[standard] # ASGI服务器 pydantic>=2.0 # 数据验证

大模型API准备:本文示例将使用OpenAI的GPT模型,因为它具有优秀的对话能力和广泛的工具调用支持。你需要准备一个OpenAI API Key。

  • 前往 OpenAI平台 注册并获取API Key。
  • 重要:请妥善保管你的API Key,不要将其硬编码在代码中或提交到版本控制系统。

项目结构预览:在开始前,我们先规划一下项目目录。

ai_companion_demo/ ├── .env # 存储环境变量(如API KEY) ├── requirements.txt # 项目依赖 ├── app/ │ ├── __init__.py │ ├── main.py # FastAPI应用入口 │ ├── agents/ # Agent相关代码 │ │ ├── __init__.py │ │ └── companion_agent.py # 核心Agent类 │ ├── memory/ # 记忆模块 │ │ ├── __init__.py │ │ └── vector_memory.py # 基于向量数据库的记忆 │ └── config.py # 配置文件 └── tests/ # 测试目录

3. 核心组件与原理拆解

一个基本的AI陪伴Agent通常由以下几个核心组件构成,理解它们是如何协作的至关重要。

3.1 大模型集成与提示工程

大模型是Agent的基石。我们通过API调用大模型,并通过提示词(Prompt)来引导其行为。一个设计良好的提示词决定了AI的角色、说话风格和任务边界。

关键点:

  • 系统提示词(System Prompt):定义AI的“人设”。例如:“你是一个温暖、幽默、善于倾听的AI朋友,名叫‘小智’。你乐于帮助用户排解情绪,分享有趣的知识,但避免讨论敏感话题。你的回答应该简洁、口语化。”
  • 对话历史(Conversation History):将过去的对话内容作为上下文输入给模型,使其能进行连贯的多轮对话。
  • 用户输入(User Input):当前用户的问题或陈述。

3.2 记忆模块

没有记忆的AI就像金鱼,每次对话都是新的开始。为了实现“陪伴感”,必须让AI记住关于用户的 key 信息。

  • 短期记忆:通常指当前会话的对话历史。可以通过维护一个对话缓冲区来实现。
  • 长期记忆:记住跨会话的用户信息,如姓名、喜好、过往的重要经历。这通常需要外部存储。我们使用向量数据库来实现。
    • 原理:将对话中的关键信息(例如:“用户喜欢科幻电影《星际穿越》”)转换为向量(embedding),并存储起来。当新对话发生时,将当前问题也转换为向量,并在向量数据库中搜索最相关的历史记忆,作为上下文提供给大模型。

3.3 工具调用(可选但强大)

Agent不仅能聊天,还能“做事”。通过定义工具(Tools),Agent可以调用外部API或函数。例如:

  • get_weather(city: str):查询天气。
  • search_web(query: str):搜索实时信息。
  • set_reminder(time: str, task: str):设置提醒。

大模型(如GPT-4)可以学习理解何时以及如何调用这些工具,并将工具执行结果整合到回复中。

3.4 Agent执行流

一个简化的Agent工作流程如下:

  1. 接收输入:获取用户消息。
  2. 检索记忆:从向量数据库中检索与当前对话相关的长期记忆。
  3. 组装上下文:将系统提示词、相关长期记忆、短期对话历史、用户当前输入组装成完整的提示。
  4. 调用大模型:将组装好的提示发送给大模型。
  5. 解析与行动:解析大模型的输出。如果输出包含工具调用,则执行对应工具,并将结果再次喂给模型,直到模型生成最终面向用户的回复。
  6. 更新记忆:将本轮对话中有价值的信息存储到长期记忆中。
  7. 返回回复:将最终回复返回给用户。

4. 完整实战:构建一个具有记忆的AI陪伴Agent

现在,让我们一步步用代码实现上述概念。

4.1 项目初始化与环境配置

首先,创建项目目录并安装依赖。

# 创建项目目录 mkdir ai_companion_demo && cd ai_companion_demo # 创建虚拟环境(可选但推荐) python -m venv venv # 激活虚拟环境 # macOS/Linux: source venv/bin/activate # Windows: venv\Scripts\activate # 创建 requirements.txt 并写入上面列出的依赖 # ... 使用编辑器创建 requirements.txt ... # 安装依赖 pip install -r requirements.txt

创建.env文件来存储敏感信息,并确保将其添加到.gitignore中。

# .env OPENAI_API_KEY=你的_openai_api_key_在这里

创建配置文件app/config.py

# app/config.py import os from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的环境变量 class Settings: OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") # 可以添加其他配置,如向量数据库路径、模型名称等 MODEL_NAME = "gpt-3.5-turbo" # 或 "gpt-4" VECTOR_DB_PATH = "./data/chroma_db" # 向量数据库存储路径 settings = Settings()

4.2 实现基于向量数据库的长期记忆

我们使用ChromaDB,一个轻量级、开源的向量数据库。

# app/memory/vector_memory.py from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.schema import Document from app.config import settings import hashlib class VectorMemory: """基于向量数据库的长期记忆管理类""" def __init__(self, collection_name="companion_memory"): # 初始化嵌入模型 self.embeddings = OpenAIEmbeddings( openai_api_key=settings.OPENAI_API_KEY, model="text-embedding-3-small" # 或 "text-embedding-ada-002" ) # 初始化或加载Chroma向量数据库 self.vectorstore = Chroma( collection_name=collection_name, embedding_function=self.embeddings, persist_directory=settings.VECTOR_DB_PATH ) self.collection_name = collection_name def _generate_id(self, text: str): """为文本生成一个唯一的ID(简单示例)""" return hashlib.md5(text.encode()).hexdigest()[:12] def add_memory(self, text: str, metadata: dict = None): """添加一条记忆到向量数据库""" if metadata is None: metadata = {} doc_id = self._generate_id(text) doc = Document(page_content=text, metadata=metadata, id=doc_id) self.vectorstore.add_documents([doc]) self.vectorstore.persist() # 持久化到磁盘 print(f"[Memory Added]: {text[:50]}...") def search_memories(self, query: str, k=3): """搜索与查询最相关的k条记忆""" if not query: return [] docs = self.vectorstore.similarity_search(query, k=k) memories = [doc.page_content for doc in docs] print(f"[Memory Retrieved for '{query}']: {memories}") return memories def clear_memory(self): """清空当前集合的所有记忆(谨慎使用)""" self.vectorstore.delete_collection() self.vectorstore = Chroma( collection_name=self.collection_name, embedding_function=self.embeddings, persist_directory=settings.VECTOR_DB_PATH ) print("[Memory Cleared]")

4.3 构建核心AI陪伴Agent

这是最核心的部分,我们将利用LangChain的ConversationChain和自定义记忆来构建Agent。

# app/agents/companion_agent.py from langchain.chains import ConversationChain from langchain.memory import ConversationBufferWindowMemory from langchain_openai import ChatOpenAI from langchain.prompts import PromptTemplate from app.config import settings from app.memory.vector_memory import VectorMemory class CompanionAgent: """AI陪伴智能体""" def __init__(self, user_id: str = "default_user"): self.user_id = user_id self.llm = ChatOpenAI( openai_api_key=settings.OPENAI_API_KEY, model_name=settings.MODEL_NAME, temperature=0.7, # 控制创造性,0.0更确定,1.0更多变 ) # 短期记忆:保留最近5轮对话 self.short_term_memory = ConversationBufferWindowMemory( memory_key="history", input_key="input", k=5 ) # 长期记忆 self.long_term_memory = VectorMemory(collection_name=f"memory_{user_id}") # 定义系统提示词模板 self.system_prompt_template = """你是一个温暖、幽默、善于倾听的AI朋友,名叫“小智”。 你的核心目标是陪伴用户,提供情感支持,并进行轻松有趣的对话。 你了解用户的以下长期信息(来自过往对话): {long_term_context} 当前对话历史: {history} 用户说:{input} 小智: """ self.prompt = PromptTemplate( input_variables=["long_term_context", "history", "input"], template=self.system_prompt_template ) # 创建对话链 self.conversation = ConversationChain( llm=self.llm, prompt=self.prompt, memory=self.short_term_memory, verbose=False # 设为True可看到详细的链式调用日志 ) def _extract_and_save_long_term_memory(self, user_input: str, ai_response: str): """一个简单的启发式方法:从对话中提取可能值得长期记忆的信息并保存""" # 这是一个简化示例。实际应用中,可以用另一个LLM来判断是否值得记忆,并总结信息。 # 例如,当用户透露明确的个人偏好或重要事实时。 memory_candidates = [] # 规则1:用户明确陈述喜好(简单关键词匹配) like_keywords = ["喜欢", "爱", "最爱", "讨厌", "不喜欢", "希望", "梦想"] if any(keyword in user_input for keyword in like_keywords): memory_candidates.append(f"用户曾表示:{user_input}") # 规则2:用户提供了个人信息(如名字、城市) # ... 可以添加更复杂的规则或NLP模型 for memory in memory_candidates: self.long_term_memory.add_memory(memory, metadata={"type": "preference"}) def chat(self, user_input: str) -> str: """主聊天接口""" # 1. 检索相关长期记忆 relevant_memories = self.long_term_memory.search_memories(user_input, k=2) long_term_context = "\n".join(relevant_memories) if relevant_memories else "暂无相关信息。" # 2. 准备输入(LangChain的ConversationChain会处理history和input的组装) # 但我们需要将long_term_context注入。这里我们直接格式化prompt。 # 由于ConversationChain的prompt输入变量是固定的,我们需要稍微绕一下。 # 更优雅的方式是自定义Memory类或Chain,这里为演示简单处理: # 实际上,我们可以修改prompt模板,让它从memory中读取long_term_context。 # 为了简化,我们这次直接构建一个临时的chain来调用。 # 获取当前的对话历史(字符串形式) history_str = self.short_term_memory.load_memory_variables({})["history"] # 使用我们定义好的prompt模板和LLM直接生成回复 formatted_prompt = self.prompt.format( long_term_context=long_term_context, history=history_str, input=user_input ) response = self.llm.invoke(formatted_prompt) ai_response = response.content # 3. 更新短期记忆(ConversationBufferWindowMemory会自动更新) # 我们需要手动调用memory的save_context方法 self.short_term_memory.save_context( {"input": user_input}, {"output": ai_response} ) # 4. 尝试提取并保存长期记忆 self._extract_and_save_long_term_memory(user_input, ai_response) return ai_response def reset_conversation(self): """重置当前对话(清空短期记忆)""" self.short_term_memory.clear() print(f"[Conversation Reset for {self.user_id}]")

4.4 创建API服务

为了能让这个Agent通过网络被调用(模拟一个后端服务),我们使用FastAPI创建一个简单的Web API。

# app/main.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from app.agents.companion_agent import CompanionAgent from app.config import settings app = FastAPI(title="AI Companion API", version="0.1.0") # 内存中存储不同用户的Agent实例(生产环境需用数据库或缓存) agent_registry = {} class ChatRequest(BaseModel): user_id: str = "default_user" message: str class ChatResponse(BaseModel): reply: str user_id: str @app.post("/chat", response_model=ChatResponse) async def chat_endpoint(request: ChatRequest): """主要的聊天端点""" user_id = request.user_id # 获取或创建用户的Agent if user_id not in agent_registry: agent_registry[user_id] = CompanionAgent(user_id=user_id) print(f"[New Agent Created for user: {user_id}]") agent = agent_registry[user_id] if not request.message or request.message.strip() == "": raise HTTPException(status_code=400, detail="Message cannot be empty") try: reply = agent.chat(request.message.strip()) return ChatResponse(reply=reply, user_id=user_id) except Exception as e: # 记录日志 print(f"Error during chat for user {user_id}: {e}") raise HTTPException(status_code=500, detail="Internal server error during processing") @app.post("/reset/{user_id}") async def reset_conversation(user_id: str): """重置指定用户的对话历史""" if user_id in agent_registry: agent_registry[user_id].reset_conversation() return {"message": f"Conversation for {user_id} has been reset."} else: raise HTTPException(status_code=404, detail=f"User {user_id} not found") @app.get("/health") async def health_check(): """健康检查端点""" return {"status": "healthy", "model": settings.MODEL_NAME}

4.5 运行与验证

首先,在项目根目录创建入口文件run.py

# run.py import uvicorn if __name__ == "__main__": uvicorn.run( "app.main:app", host="0.0.0.0", # 允许外部访问 port=8000, reload=True # 开发模式,代码修改自动重启 )

然后,在终端启动服务:

python run.py

看到类似Uvicorn running on http://0.0.0.0:8000的输出,说明服务启动成功。

现在,我们可以使用curl或任何API测试工具(如Postman)进行测试。

测试1:开始一段对话

curl -X POST "http://localhost:8000/chat" \ -H "Content-Type: application/json" \ -d '{"user_id": "alice", "message": "你好,小智!我今天心情不太好。"}'

预期会得到一个温暖、关怀性质的回复。

测试2:进行多轮对话,并透露个人信息

# 第二轮 curl -X POST "http://localhost:8000/chat" \ -H "Content-Type: application/json" \ -d '{"user_id": "alice", "message": "工作压力太大了。对了,我特别喜欢看电影,尤其是科幻片。"}' # 第三轮(稍后) curl -X POST "http://localhost:8000/chat" \ -H "Content-Type: application/json" \ -d '{"user_id": "alice", "message": "你能推荐一部好看的科幻电影吗?"}'

注意观察第三轮的回复。由于我们在第二轮透露了“喜欢科幻片”这个信息,并且_extract_and_save_long_term_memory方法通过关键词“喜欢”将其存入了向量数据库。在第三轮提问时,search_memories会检索到这条信息,并作为long_term_context提供给模型。因此,AI的推荐会更个性化,可能会说:“既然你特别喜欢科幻片,我推荐《降临》...”

测试3:重置对话

curl -X POST "http://localhost:8000/reset/alice"

这将清空Alice的短期对话历史,但长期记忆(存储在向量数据库)依然保留。

5. 常见问题与排查思路

在开发过程中,你可能会遇到以下问题:

问题现象可能原因排查与解决思路
启动服务时报错ModuleNotFoundError依赖未安装或虚拟环境未激活。1. 确认已激活虚拟环境。
2. 运行pip install -r requirements.txt确保所有依赖安装成功。
3. 检查Python路径是否正确。
调用/chat接口返回500错误,日志显示AuthenticationErrorOpenAI API Key 错误或未设置。1. 检查.env文件中的OPENAI_API_KEY是否正确无误。
2. 确保.env文件在项目根目录,且python-dotenv已安装。
3. 在OpenAI官网检查API Key是否有效、是否有余额。
AI的回复不连贯或忘记之前说的话短期记忆窗口k设置过小,或长期记忆未正确检索。1. 检查ConversationBufferWindowMemoryk参数(示例中为5),适当调大。
2. 在companion_agent.py中开启verbose=True,观察long_term_context是否被正确检索和格式化到prompt中。
3. 检查向量数据库chromadb是否成功存储和读取数据。
向量数据库搜索返回空结果嵌入模型不一致或数据未持久化。1. 确保初始化VectorMemory和搜索时使用的embedding_function是同一个模型(如都是text-embedding-3-small)。
2. 调用add_memory后是否执行了vectorstore.persist()
3. 搜索的关键词query是否太短或太模糊。
服务响应速度慢网络延迟或模型推理时间长。1. 使用gpt-3.5-turbo会比gpt-4快很多,成本也更低,适合原型开发。
2. 考虑对对话历史进行摘要压缩,而不是传送全部原始文本,以减少token消耗和延迟。
3. 确保服务器网络能稳定访问OpenAI API。
长期记忆存储了无关信息记忆提取规则 (_extract_and_save_long_term_memory) 过于简单。1. 这是本示例的简化。生产环境中,应使用一个独立的“记忆判断”LLM调用,来分析对话片段是否值得长期存储,并生成简洁的摘要。
2. 可以为记忆添加权重、类型、时间戳等元数据,并实现记忆衰减或定期清理机制。

6. 最佳实践与工程建议

将原型发展为可上线的产品,需要考虑更多工程化问题。

6.1 提示工程优化

  • 人设精细化:系统提示词需要精心打磨,可以包含更详细的行为准则、知识边界、语气词库等。可以使用Few-Shot Prompting,在提示词中给出几个优秀的对话示例。
  • 上下文管理:大模型有上下文长度限制。需要对长的对话历史进行智能摘要,而不是简单截断。LangChain提供了ConversationSummaryBufferMemory等高级记忆类。
  • 输出格式化:如果需要AI返回结构化数据(如JSON),可以使用LangChain的StructuredOutputParser或利用OpenAI的response_format参数(如JSON mode)。

6.2 记忆系统增强

  • 记忆分层:实现短期(会话)、中期(近期会话摘要)、长期(核心用户画像)的多层记忆结构。
  • 记忆提取与总结:如前所述,使用一个轻量级LLM(如GPT-3.5)来实时判断对话中哪些信息值得存储,并自动总结成简洁的陈述句。
  • 记忆检索优化:结合关键词搜索和向量搜索(混合搜索),提高记忆检索的准确率。为记忆添加时间戳和重要性评分,实现基于时间的衰减检索。

6.3 性能、安全与成本

  • 缓存:对频繁检索的长期记忆或通用知识问答结果进行缓存,减少对向量数据库和LLM的调用。
  • 限流与降级:在API层面实现限流,防止滥用。在LLM服务不稳定时,有降级策略(如返回预置的友好提示)。
  • 内容安全:必须在服务端对用户输入和AI输出进行双重内容安全过滤,防止生成有害、偏见或不合规的内容。可以利用各大云平台提供的内容安全API,或在调用LLM前设置严格的系统提示词约束。
  • 成本控制:监控Token使用量,设置预算和告警。对于非核心交互,考虑使用更小、更便宜的模型。对对话历史进行压缩是降低成本的关键。

6.4 可观测性与测试

  • 全链路日志:记录每个用户会话的完整输入、输出、使用的记忆、Token消耗和响应时间。这对调试和优化至关重要。
  • A/B测试:对人设、提示词、记忆策略等进行A/B测试,用数据驱动产品迭代。
  • 评估体系:建立一套自动化和人工结合的评估体系,从相关性、安全性、趣味性、一致性等多个维度评估AI陪伴的质量。

6.5 架构扩展

  • 微服务化:将对话引擎、记忆服务、用户管理、内容安全等拆分为独立的微服务。
  • 异步处理:对于耗时的记忆存储、总结等操作,可以放入消息队列异步处理,不阻塞实时对话。
  • 支持多模态:未来可以集成语音识别/合成、图像生成/理解模型,打造更丰富的交互体验。这需要设计统一的多模态消息格式和路由逻辑。

从“曝小红书加大AI投入”这条行业动态,到亲手搭建一个具备记忆功能的AI陪伴Agent原型,我们走完了从概念到代码的完整路径。这不仅仅是学习了一个框架或API的调用,更是对下一代AI原生应用核心架构——智能体(Agent)的实践。真正的AI社交产品,其复杂性远不止于此,涉及更强大的人设引擎、情感计算、社交图谱融合以及前所未有的用户体验设计。

对于开发者,下一步可以沿着这些方向深入:

  1. 深入LangChain/LlamaIndex:掌握更多高级组件,如工具调用(Tools)、规划(Planning)、多智能体协作(Multi-Agent)。
  2. 探索开源模型:尝试在本地部署如Qwen、Llama等开源大模型,降低API成本和数据隐私风险。
  3. 学习模型微调:使用LoRA等轻量级技术,用特定数据微调模型,使其人设、知识或风格更贴合你的产品需求。
  4. 关注工程化框架:了解如何将此类应用部署到生产环境,涉及Docker容器化、Kubernetes编排、弹性伸缩、监控告警等云原生技术。

技术的浪潮已至,AI正在重塑人机交互的范式。作为开发者,理解原理、动手实践、持续迭代,是抓住这波机遇的最好方式。希望这个实战项目能成为你探索AI社交世界的一块有用的敲门砖。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/8 15:03:47

SVGnest完整指南:免费开源的智能材料切割优化工具

SVGnest完整指南:免费开源的智能材料切割优化工具 【免费下载链接】SVGnest An open source vector nesting tool 项目地址: https://gitcode.com/gh_mirrors/sv/SVGnest 你是否曾经面对激光切割或CNC加工任务时,看着昂贵的材料被大量浪费而感到心…

作者头像 李华
网站建设 2026/8/8 15:00:04

2026年权威测评5款高准确率录音转文字软件实用推荐

截至2026年,我们完成了AssemblyAI、听脑AI、腾讯云语音转文字、Trint、讯飞听见五款高准确率录音转文字工具的对比测评,针对HR的面试记录、OKR面谈等人事场景,听脑AI适配度更高;有跨国多语言需求可以选择Trint、AssemblyAI&#x…

作者头像 李华
网站建设 2026/8/8 14:58:21

Qt MQTT客户端终极指南:高效实现物联网通信的完整解决方案

Qt MQTT客户端终极指南:高效实现物联网通信的完整解决方案 【免费下载链接】qmqtt MQTT client for Qt 项目地址: https://gitcode.com/gh_mirrors/qm/qmqtt qmqtt是一个专为Qt框架设计的轻量级MQTT客户端库,为Qt开发者提供了在物联网和实时通信应…

作者头像 李华
网站建设 2026/8/8 14:57:23

图的基本操作

文章目录 FirstNeighbor(G, x)NextNeighbor(G, x, y) FirstNeighbor(G, x) FirstNeighbor(G, x):求图G中顶点 x 的 第一个邻接点,若有则返回顶点号。若 x 没有邻接点或图中不存在 x ,则返回 -1。 NextNeighbor(G, x, y) NextNeighbor(G, x,…

作者头像 李华
网站建设 2026/8/8 14:56:00

Grok AI 从玩具到工具:开发者视角下的 API、代码能力与生态建设

如果你最近关注 AI 领域,特别是大语言模型(LLM)的动态,可能会发现一个现象:很多开发者对某个新模型或工具的评价,往往停留在“能用”或“不能用”的层面,却很少深入探讨“如何让它变得更好用”。…

作者头像 李华
网站建设 2026/8/8 14:55:53

PPTAgent和DeepPresenter:AI演示文稿生成的终极完整指南

PPTAgent和DeepPresenter:AI演示文稿生成的终极完整指南 【免费下载链接】PPTAgent An Agentic Framework for Reflective PowerPoint Generation 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent 你是否曾为制作演示文稿而烦恼?PPTAgent和…

作者头像 李华