news 2026/8/21 15:58:39

AI应用开发实战:从零构建具备工具调用与记忆的智能体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI应用开发实战:从零构建具备工具调用与记忆的智能体

如果你是一名开发者,最近一定被各种AI应用开发的信息轰炸过。从“AI Agent”到“大模型应用开发工程师”,从“AI全栈开发”到“AI应用开发八股文”,新概念层出不穷,教程也铺天盖地。但你是否发现,很多教程要么是“Hello World”级别的简单调用,要么是堆砌各种前沿论文和框架,看完后依然不知道如何从零到一构建一个真正可用的AI应用?或者,你是一名Java、Web后端开发者,想转型AI应用开发,却感觉门槛太高,不知从何下手?

这正是本文要解决的核心问题。AI应用开发的核心,不是去研究大模型本身,而是学会如何将大模型的能力,像调用API一样,稳定、高效、低成本地集成到你的业务系统中,并解决真实世界的复杂问题。它更像是一门新的“后端工程学”,而非纯粹的算法研究。

本文将为你提供一份2026年视角下,真正面向工程实践的AI应用开发全景路线图。我们不会空谈概念,而是聚焦于“如何做”。从环境搭建、核心概念、主流框架选择,到构建一个具备记忆、工具调用和复杂推理能力的AI Agent,再到性能优化、成本控制和部署上线,手把手带你走完一个完整项目闭环。无论你是想入门的新手,还是希望系统化提升的开发者,这篇文章都将帮你避开99%的弯路,构建起清晰的AI应用开发知识体系。

1. 这篇文章真正要解决的问题:从“调用API”到“构建智能体”

很多开发者对AI应用开发的理解,还停留在调用OpenAI或文心一言的Chat Completion API,然后处理返回的文本。这仅仅是第一步,甚至可以说是最基础的一步。真正的挑战在于:

  1. 上下文长度限制:大模型有token限制,如何让AI记住长对话或大量背景信息?
  2. 知识实时性:模型训练数据有截止日期,如何让AI获取最新信息(如今天天气、股价)?
  3. 复杂任务分解:用户说“帮我规划一个三天的北京旅游行程并预订酒店”,AI如何理解并拆解成“搜索景点”、“查询天气”、“调用预订API”等一系列子任务?
  4. 稳定性与成本:API调用可能失败、延迟高、费用昂贵,如何设计重试、降级和成本监控?
  5. 工程化集成:如何将AI能力像微服务一样,无缝集成到现有的Java、Python、Go等技术栈中?

本文将围绕这些工程化痛点,提供一个从入门到精通的实战指南。我们的目标不是成为大模型研究员,而是成为能利用大模型解决业务问题的AI应用工程师

2. 基础概念与核心原理:重新定义AI应用开发

在深入代码之前,必须厘清几个关键概念,它们构成了现代AI应用开发的基石。

2.1 大模型(LLM)即服务

这是最基本的范式。我们将ChatGPT、Claude、GLM、通义千问等大模型视为一个提供“智能”的黑盒服务。通过HTTP API发送提示词(Prompt),获取文本回复。开发者的核心工作从“编写业务逻辑”部分转变为“设计提示词”和“处理模型输出”。

2.2 提示词工程(Prompt Engineering)

这是与模型交互的艺术与科学。一个好的提示词能极大提升模型输出的准确性和可用性。它不仅仅是“请扮演一个专家”,而是包含了:

  • 角色设定:明确AI的角色(如资深运维工程师、代码审查助手)。
  • 任务指令:清晰、无歧义地描述任务。
  • 上下文信息:提供必要的背景知识。
  • 输出格式:指定期望的输出格式(如JSON、Markdown、列表)。
  • 示例(Few-Shot):提供少量输入输出示例,引导模型模仿。

2.3 检索增强生成(RAG)

这是解决模型知识陈旧和幻觉问题的关键技术。其核心思想是:不让模型凭空回忆,而是先从你的私有知识库(文档、数据库)中检索出相关片段,然后将“问题+检索到的片段”一起交给模型生成答案。

用户问题 → 向量化 → 向量数据库检索 → 获取相关文档片段 → 组合成Prompt → 大模型生成 → 最终答案

这相当于给模型配了一个“外部记忆库”。

2.4 AI Agent(智能体)

这是当前AI应用开发最火热的方向。一个Agent不再是被动地回答单次提问,而是一个能感知环境、规划、执行动作并持续学习的自治系统。其核心组件通常包括:

  • 规划模块:将复杂目标分解为可执行的子任务序列。
  • 工具调用:能够使用外部工具(如计算器、搜索引擎、API)。
  • 记忆模块:拥有短期(对话记忆)和长期(向量存储)记忆。
  • 反思与学习:能评估自身行动结果并调整策略。

一个简单的类比:如果把单纯调用Chat API比作“问路”,那么RAG就是“给你一张地图再问路”,而Agent则是“一个拥有地图、会开车、能根据路况调整路线的自动驾驶导航系统”。

3. 环境准备与前置条件

在开始构建AI应用前,你需要一个可用的开发环境。以下是一个通用且推荐的基础配置:

  1. 操作系统:Windows 10/11, macOS, 或 Linux (Ubuntu 20.04+)。Linux环境在部署时更友好。
  2. Python环境:Python 3.9 或 3.10。强烈建议使用虚拟环境
    # 创建虚拟环境 python -m venv ai_dev_env # 激活 (Linux/macOS) source ai_dev_env/bin/activate # 激活 (Windows) ai_dev_env\Scripts\activate
  3. 代码编辑器:VS Code(推荐,有丰富的AI和Python插件)或 PyCharm。
  4. 大模型API密钥:你需要至少一个可访问的大模型服务。
    • 国际:OpenAI (GPT-4o), Anthropic (Claude 3), 或使用开源模型本地部署(如Ollama)。
    • 国内:智谱AI (GLM-4), 百度文心一言, 阿里通义千问, 月之暗面 (Kimi)。
    • 重要:请妥善保管你的API Key,不要提交到代码仓库。使用环境变量管理。
  5. 基础工具:Git, curl/postman用于测试API。

4. 核心流程拆解:从零构建一个天气查询AI助手

我们将通过一个完整的项目来串联所有核心概念。这个项目的目标是:构建一个能理解自然语言、查询实时天气、并给出穿衣建议的AI助手

项目架构图(文字描述)

  1. 用户界面:一个简单的命令行或Web界面,接收用户输入如“北京今天天气怎么样?”
  2. 意图识别与信息提取:使用大模型(或小模型)从用户输入中提取结构化信息(城市、日期)。
  3. 工具调用:根据提取的信息,调用第三方天气API(如和风天气)获取实时数据。
  4. 推理与生成:将天气数据再次喂给大模型,让其生成自然、友好的回复,并附加穿衣建议。
  5. 返回结果:将最终回复呈现给用户。

这个流程涵盖了提示词工程工具调用(Function Calling)多步推理,是构建更复杂Agent的微型样板。

5. 完整示例与代码实现

让我们开始动手编码。我们将使用LangChain这个目前最流行的AI应用开发框架,它抽象了与各种大模型、工具、记忆组件的交互,让开发者能更专注于业务逻辑。

5.1 项目初始化与依赖安装

创建一个新的项目目录,并安装核心依赖。

mkdir weather_ai_assistant cd weather_ai_assistant # 创建虚拟环境并激活(步骤见上文) # 安装依赖 pip install langchain langchain-openai langchain-community python-dotenv requests
  • langchain: 核心框架。
  • langchain-openai: OpenAI模型集成。
  • langchain-community: 社区贡献的各种工具和组件。
  • python-dotenv: 管理环境变量。
  • requests: 用于调用天气API。

创建.env文件来存储敏感信息(务必将其加入.gitignore):

# .env OPENAI_API_KEY=sk-your-openai-api-key-here # 如果你使用国内模型,例如智谱AI ZHIPUAI_API_KEY=your-zhipuai-api-key-here WEATHER_API_KEY=your-hefeng-weather-api-key-here # 从和风天气官网申请

5.2 第一步:基础大模型调用与提示词工程

我们先实现最简单的功能:让AI根据城市名生成一句天气问候语。这展示了最基础的Prompt使用。

创建一个文件basic_chat.py

# basic_chat.py import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate # 1. 加载环境变量 load_dotenv() # 2. 初始化大模型 (这里以OpenAI为例,可替换为其他模型) llm = ChatOpenAI( model="gpt-3.5-turbo", # 或 "gpt-4" temperature=0.7, # 控制创造性,0-1,越高越随机 api_key=os.getenv("OPENAI_API_KEY") ) # 3. 构建提示词模板 prompt_template = ChatPromptTemplate.from_messages([ ("system", "你是一个友好的天气助手。"), ("user", "请为{city}这个城市生成一句关于天气的问候语。") ]) # 4. 创建处理链 chain = prompt_template | llm # LangChain的管道操作符,表示 prompt -> llm # 5. 调用链并获取结果 try: response = chain.invoke({"city": "上海"}) print("AI回复:", response.content) except Exception as e: print(f"调用失败:{e}")

运行python basic_chat.py,你会看到类似“上海今天天气如何?愿您拥有晴朗的一天!”的输出。这里的关键是ChatPromptTemplate,它允许我们动态插入变量({city}),这是构建复杂提示词的基础。

5.3 第二步:实现工具调用(Function Calling)—— 获取真实天气数据

现在,我们需要让AI能获取真实数据。我们将定义一个“获取天气”的工具(函数),并让大模型学会在需要时调用它。

首先,实现一个简单的天气API客户端。我们使用和风天气的免费API。

# weather_tool.py import os import requests from typing import Optional def get_current_weather(city: str, api_key: Optional[str] = None) -> str: """ 根据城市名称获取当前天气情况。 参数: city: 城市名,例如“北京” api_key: 和风天气API密钥,如果为None则从环境变量读取 返回: 格式化的天气信息字符串 """ if api_key is None: api_key = os.getenv("WEATHER_API_KEY") if not api_key: return "错误:未配置天气API密钥。" # 1. 获取城市Location ID (简化版,实际应用应缓存此结果) geo_url = f"https://geoapi.qweather.com/v2/city/lookup?location={city}&key={api_key}" try: geo_resp = requests.get(geo_url, timeout=10) geo_data = geo_resp.json() if geo_data['code'] != '200' or not geo_data['location']: return f"错误:未找到城市 '{city}' 的信息。" location_id = geo_data['location'][0]['id'] city_name = geo_data['location'][0]['name'] except Exception as e: return f"查询城市ID时出错:{e}" # 2. 获取实时天气 weather_url = f"https://devapi.qweather.com/v7/weather/now?location={location_id}&key={api_key}" try: weather_resp = requests.get(weather_url, timeout=10) weather_data = weather_resp.json() if weather_data['code'] != '200': return f"错误:获取天气数据失败,代码:{weather_data['code']}" now = weather_data['now'] weather_text = now['text'] temperature = now['temp'] humidity = now['humidity'] wind_dir = now['windDir'] wind_scale = now['windScale'] return (f"{city_name}当前天气:{weather_text},气温{temperature}摄氏度," f"湿度{humidity}%,{wind_dir}风{wind_scale}级。") except Exception as e: return f"获取天气详情时出错:{e}" # 本地测试 if __name__ == "__main__": # 请确保.env文件中有WEATHER_API_KEY from dotenv import load_dotenv load_dotenv() print(get_current_weather("北京"))

接下来,我们将这个函数“包装”成LangChain能识别的工具,并创建一个能自动决定何时调用该工具的AI链。

# agent_weather.py import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate from langchain.tools import Tool from weather_tool import get_current_weather # 加载环境变量 load_dotenv() # 1. 定义工具列表 tools = [ Tool( name="get_current_weather", func=get_current_weather, description="获取指定城市的当前天气情况。输入应为城市名称,例如‘北京’。" ) ] # 2. 初始化大模型 (支持工具调用的模型) llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0, api_key=os.getenv("OPENAI_API_KEY")) # 3. 创建提示词,其中必须包含 `{tools}` 和 `{agent_scratchpad}` 等占位符 # LangChain提供了辅助函数来构建标准提示词 from langchain import hub prompt = hub.pull("hwchase17/openai-tools-agent") # 一个预置的、适合工具调用Agent的提示词模板 # 4. 创建Agent agent = create_tool_calling_agent(llm, tools, prompt) # 5. 创建Agent执行器 agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True) # 6. 运行测试 if __name__ == "__main__": queries = [ "北京今天天气怎么样?", "上海和广州的天气分别如何?", "帮我看看杭州的天气,然后根据天气给我点穿衣建议。" ] for query in queries: print(f"\n用户:{query}") try: result = agent_executor.invoke({"input": query}) print(f"助手:{result['output']}") except Exception as e: print(f"执行出错:{e}")

运行python agent_weather.py。注意观察控制台输出(verbose=True),你会看到类似以下的思考过程:

> Entering new AgentExecutor chain... 我需要查询北京的当前天气。 Action: get_current_weather Action Input: {"city": "北京"} Observation: 北京当前天气:晴,气温22摄氏度,湿度35%,南风2级。 Thought: 用户问的是北京今天的天气,我已经获取到了信息。 Action: __done__ Final Answer: 北京今天天气晴朗,气温22摄氏度,湿度35%,吹南风2级。是个不错的好天气!

这就是一个最简单的AI Agent在工作!它自动理解了用户意图,调用了正确的工具,并将工具返回的结构化数据转化为了自然的语言回复。

5.4 第三步:引入记忆与多轮对话

目前的Agent是“健忘”的,每次对话都是独立的。为了让助手能进行连贯的多轮对话(例如用户问“那明天呢?”),我们需要引入记忆模块。

# agent_with_memory.py import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain.tools import Tool from langchain.memory import ConversationBufferMemory from weather_tool import get_current_weather load_dotenv() # 1. 定义工具(同上) tools = [Tool(name="get_current_weather", func=get_current_weather, description="获取指定城市的当前天气。输入城市名。")] # 2. 初始化LLM llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0, api_key=os.getenv("OPENAI_API_KEY")) # 3. 构建包含记忆上下文的提示词 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个友好的天气助手,可以查询实时天气。请根据对话历史来理解上下文。"), MessagesPlaceholder(variable_name="chat_history"), # 历史消息占位符 ("user", "{input}"), MessagesPlaceholder(variable_name="agent_scratchpad"), # Agent思考过程占位符 ]) # 4. 创建记忆组件 memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) # 5. 创建Agent agent = create_tool_calling_agent(llm, tools, prompt) # 6. 创建带有记忆的执行器 agent_executor = AgentExecutor( agent=agent, tools=tools, memory=memory, verbose=True, handle_parsing_errors=True ) # 7. 模拟多轮对话 if __name__ == "__main__": dialogue = [ "北京天气如何?", "湿度有点低,建议我穿什么衣服?", # 这里AI需要记住上一轮对话中的“北京” "那上海呢?" # 这里AI需要区分,新问题针对的是上海 ] for query in dialogue: print(f"\n用户:{query}") result = agent_executor.invoke({"input": query}) print(f"助手:{result['output']}") print("-" * 40)

运行此脚本,你会发现AI在第二轮能正确理解“湿度低”指的是北京,并在第三轮能明确将查询目标切换到上海。ConversationBufferMemory自动将之前的对话内容作为上下文注入到了每次的Prompt中。

6. 运行结果与效果验证

运行上述代码,你应该能观察到以下成功现象:

  1. 基础调用(basic_chat.py):成功输出一句包含指定城市的天气问候语。
  2. 工具调用(agent_weather.py):
    • 控制台打印出详细的ThoughtActionObservation链条。
    • 最终输出结合了真实天气数据(来自API)和自然语言生成。
    • 对于“上海和广州”的查询,Agent应能自动、连续地调用两次get_current_weather工具。
  3. 多轮对话(agent_with_memory.py):
    • 第二轮对话能基于第一轮的“北京”天气数据进行推理和穿衣建议。
    • 第三轮对话能正确识别查询目标已变为“上海”。

如何验证失败?

  • API Key错误:通常会收到AuthenticationErrorInvalidRequestError。检查.env文件和环境变量加载。
  • 网络问题:请求超时。检查代理设置或网络连接。
  • 工具调用失败:Agent可能无法正确解析用户意图,或工具描述不够清晰。可以调整工具的描述(description),使其更精确。
  • 提示词问题:如果输出不符合预期,首先检查verbose日志,看模型的“思考过程”是否合理。调整system提示词或temperature参数。

7. 常见问题与排查思路

在开发AI应用时,你会遇到一些典型问题。下表列出了常见问题及其解决方法:

问题现象可能原因排查方式解决方案
导入LangChain模块失败 (ModuleNotFoundError)虚拟环境未激活;依赖未正确安装。运行pip list | grep langchain检查。激活虚拟环境,使用pip install -r requirements.txt重新安装。
调用大模型API超时或失败网络连接问题;API Key无效或余额不足;服务端故障。1. 用curl或 Postman 直接测试API端点。
2. 查看错误信息,如RateLimitError
1. 检查网络和代理。
2. 登录对应平台检查API Key状态和余额。
3. 实现重试机制和降级策略。
Agent不调用工具,直接回答1. 提示词未正确引导。
2. 工具描述不清晰。
3. 模型能力不足。
打开verbose=True,查看模型的“Thought”过程,看它是否意识到需要工具。1. 优化系统提示词,明确指令如“你必须使用工具来获取实时数据”。
2. 细化工具描述,明确输入输出格式。
3. 尝试更强大的模型(如GPT-4)。
工具调用结果未被有效利用Agent的“思考”步骤在得到工具结果后停止。查看Observation后的Thought是否合理。1. 检查工具返回的数据格式是否易于模型理解(最好是清晰文本)。
2. 在提示词中要求模型“根据Observation回答问题”。
多轮对话中记忆混乱记忆上下文过长,超出模型token限制。计算每次请求的token数量。1. 使用ConversationSummaryMemoryConversationBufferWindowMemory来限制记忆长度。
2. 将重要信息(如用户偏好)存入长期存储(如向量数据库)。
处理速度慢1. 模型响应慢。
2. 串行调用工具。
3. 网络延迟。
使用日志记录每个步骤耗时。1. 考虑使用更快的模型(如GPT-3.5-Turbo)。
2. 对于可并行的工具调用,设计支持并发的Agent架构。
3. 缓存频繁查询的结果。
成本不可控1. 提示词过长。
2. 不必要的复杂推理。
3. 未监控用量。
查看API提供方的用量统计。1. 优化提示词,去除冗余信息。
2. 对简单任务使用小模型或规则引擎。
3. 实现使用量监控和告警。

8. 最佳实践与工程建议

将AI应用从Demo推向生产环境,需要遵循软件工程的最佳实践。

8.1 提示词工程化

  • 模板化管理:不要将提示词硬编码在代码中。使用配置文件(如YAML、JSON)或数据库来管理不同场景的提示词模板,便于A/B测试和迭代。
  • 版本控制:像管理代码一样管理提示词,使用Git记录每次变更。
  • 测试与评估:构建提示词的测试集,评估其在不同输入下的输出稳定性、准确性和安全性。

8.2 架构设计

  • 分层设计:将AI能力层(Agent/Chain)与业务逻辑层、数据访问层分离。例如,业务层处理用户会话,AI层专注于意图识别和任务执行。
  • 可观测性:在关键节点(模型调用、工具调用、最终输出)添加详细的日志和监控。记录每次调用的输入、输出、token消耗、耗时和费用。这对于调试和成本分析至关重要。
  • 容错与降级:模型API可能不稳定。必须实现重试机制、超时控制、熔断和降级策略(例如,模型服务失败时,回退到基于规则的应答)。

8.3 性能与成本优化

  • 缓存:对频繁且结果不变的查询(如“北京的经纬度”)进行缓存,减少不必要的模型调用和API调用。
  • 流式输出:对于生成较长文本的场景,使用模型提供的流式接口(Streaming),提升用户体验。
  • 模型选型:并非所有任务都需要GPT-4。根据任务复杂度选择合适的模型(如GPT-3.5-Turbo用于简单分类,GPT-4用于复杂推理),并在成本和质量间取得平衡。
  • Token管理:精心设计提示词,减少不必要的上下文。对于长文档RAG,使用高质量的文本分块和检索策略,避免向模型灌入过多无关token。

8.4 安全与合规

  • 输入输出过滤:对用户输入和模型输出进行严格的过滤和审查,防止注入攻击、敏感信息泄露或生成有害内容。
  • 权限控制:工具调用(如发送邮件、操作数据库)必须经过严格的权限校验,确保Agent只能在授权范围内行动。
  • 数据隐私:如果使用第三方模型API,需了解其数据使用政策。对敏感数据考虑本地化部署开源模型或使用隐私保护技术。
  • 可解释性与审计:保留完整的交互日志,确保AI决策过程可追溯、可审计,这对于金融、医疗等合规要求高的领域尤为重要。

8.5 团队协作与代码规范

  • 统一框架:团队内部应约定使用统一的开发框架(如LangChain、Semantic Kernel、Dify),降低协作成本。
  • 工具标准化:将常用的工具(数据库查询、内部API调用)封装成标准化的ToolSkill,供所有Agent项目复用。
  • 文档与注释:为自定义的Agent、Chain、Tool编写清晰的文档,说明其用途、输入输出、依赖和配置项。

9. 总结与后续学习方向

通过本文,我们完成了一个从零到一的AI应用开发实战:从一个简单的提示词调用,到一个能使用工具、拥有记忆的天气查询Agent。我们不仅写了代码,更梳理了背后的核心概念(RAG、Agent、工具调用)和工程化思维。

本文的核心价值在于提供了一个可复现的工程化路径,而不是停留在理论。你现在应该能够:

  1. 理解AI应用开发与传统软件开发的本质区别。
  2. 使用LangChain框架快速搭建具备工具调用能力的AI Agent。
  3. 为Agent添加记忆功能,实现连贯的多轮对话。
  4. 识别并排查开发过程中的常见问题。
  5. 了解将AI应用投入生产环境所需考虑的关键因素。

下一步,你可以沿着以下几个方向深入:

  1. 深入RAG:学习如何将PDF、Word、网页等非结构化数据转换为向量,存入Chroma、Pinecone、Milvus等向量数据库,构建一个基于私有知识库的智能问答系统。
  2. 复杂Agent架构:研究ReAct、Plan-and-Execute、CrewAI、AutoGen等多Agent协作框架,让AI能处理需要多步骤规划和团队协作的复杂任务。
  3. 模型微调:当通用模型在特定领域表现不佳时,学习如何使用LoRA、QLoRA等技术,用你自己的数据对开源大模型进行轻量级微调,获得更专业、更可控的能力。
  4. 评估与测试:学习如何系统性地评估你的AI应用,包括准确性、安全性、偏见和稳定性,建立可靠的测试流水线。
  5. 探索更多框架:LangChain是优秀的选择,但并非唯一。可以了解微软的Semantic Kernel(与.NET生态结合紧密)、LlamaIndex(专注于RAG)、Dify/AutoDL/FastGPT等低代码平台,根据项目需求选择最合适的工具。

AI应用开发是一个快速演进的领域,但万变不离其宗:理解问题、设计流程、选择工具、工程化实现。保持动手实践,持续关注社区动态,你就能在这个充满机遇的赛道上稳步前行。建议收藏本文,在构建你的第一个AI应用时,随时回来查阅这些步骤和避坑指南。

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

大二学生如何高效学习Python并备战大厂实习

1. 为什么大二开始准备Python是明智之选2023年Stack Overflow开发者调查显示,Python已连续六年成为最受欢迎编程语言前三名。对于零基础的大二学生而言,选择Python作为切入点具有多重战略优势。从技术特性来看,Python的语法接近自然英语&…

作者头像 李华
网站建设 2026/8/21 15:55:02

InternVL3-8B 流式输出教程:打造丝滑的实时对话体验

InternVL3-8B 流式输出教程:打造丝滑的实时对话体验 【免费下载链接】InternVL3-8B 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3-8B 你是否遇到过这样的尴尬:向大模型提问后,屏幕上光标闪烁,你对着…

作者头像 李华
网站建设 2026/8/21 15:50:55

不止 Chrome:cookie_crimes 在 Microsoft Edge 上同样好用的 3 个原因

不止 Chrome:cookie_crimes 在 Microsoft Edge 上同样好用的 3 个原因 【免费下载链接】cookie_crimes Read local Chrome cookies without root or decrypting 项目地址: https://gitcode.com/gh_mirrors/co/cookie_crimes cookie_crimes 是一个无需 root 权…

作者头像 李华