零基础搭建AI对话与绘画工具:Python调用大模型API全指南 最近不少朋友在后台问我网上传的“新版本大模型”“新绘画模型”能不能免费体验手机和电脑怎么才能正常访问今天这篇教程不制造焦虑也不讲那些需要特殊网络环境的操作而是从国内开发者和普通用户都能走通的路径出发分享一套合规、免费、可上手验证的 AI 对话与 AI 绘画综合使用方案。本文会分成三块核心内容先帮你理清“在国内使用 AI 能力”到底有哪些合规选择再给出手机端和电脑端都能用的完整实操流程最后用 Python Web 的方式带你从零搭建一个“对话 文生图”小工具让 AI 能力真正落到自己的项目里。无论你是普通用户还是想基于大模型接口做点应用开发的程序员这篇文章都值得收藏备用。1. 背景与核心概念1.1 为什么“国内使用 AI 工具”是一个普遍问题过去一段时间海外 AI 产品确实在对话质量和图片生成效果上给人留下了深刻印象。与此同时国内也涌现出很多优秀的 AI 服务平台提供了包括文本对话、图片生成、代码补全、语音识别在内的能力。于是很多用户面临的核心问题就不是“有没有 AI 可用”而是“选哪一家”“怎么接入”“能不能免费体验”。从技术上来说使用 AI 能力通常有两种方式使用现成的 Web 应用或客户端打开网页就能聊天、画图调用官方 API把 AI 能力集成到自己的脚本、网站、小程序或业务系统里。第一种适合普通用户第二种适合开发者。今天的文章会两边兼顾。1.2 合规使用 AI 服务的三条路径结合国内实际情况你可以通过下面三条路径安全、合规地用上 AI 能力路径适合人群特点国内大模型 Web 应用 / App普通用户注册即用通常有免费额度不需要写代码国内 AI 开放平台 API开发者、学习者接口规范有免费试用包适合二次开发云端开发环境 / 开源大模型本地部署学习研究、私有化场景数据自主可控但对硬件有要求需要特别提醒的是网络上有一些打着“某某新模型”“某某超强绘画”旗号的第三方镜像站它们可能并不稳定也可能存在隐私泄露风险。正规做法是认准官方渠道和信誉良好的平台下面的实战也主要围绕正规 API 展开。1.3 别被“非官方新版本”的噱头带偏在 AI 领域“新版本”的消息总是传得很快。有些博主为了流量会编造“内部版本”“免费版”等概念实际上这些名称并没有对应官方发布的产品。作为普通用户我们不需要追逐来路不明的版本号而应该关注一件事当前你选的平台支持哪些模型这些模型的能力是否满足你的需求平台是否提供清晰的文档和免费额度所以这篇文章不会教大家寻找什么“隐藏版本”而是帮你建立一套“正规接入 AI 能力”的方法论。这套方法论长期有效不会因为某个版本号变化而失效。2. 环境准备与平台选择2.1 电脑端基础环境电脑端的环境比较简单不管你是 Windows、macOS 还是 Linux只要能安装 Python就可以完成下面的实战。建议安装 Python 3.9 或更高版本。如果你还没有安装 Python可以到官网下载安装包安装时记得勾选Add Python to PATHInstall pip安装完成后打开命令行工具输入以下命令验证python --version pip --version能输出版本号说明环境没问题。2.2 手机端需要准备什么手机端的使用分两种情况如果只是使用现成的 Web 应用手机浏览器即可不需要额外环境如果想把后面实战中的“AI 小工具”跑在电脑上再用手机访问那么手机和电脑需要连接同一个局域网或者让电脑开启一个手机可访问的接口。这种“电脑做服务端手机做客户端”的方式非常实用相当于你自己搭建了一个私有 AI 小应用。2.3 如何选择 AI 开放平台国内现在有很多大模型开放平台它们通常提供对话补全接口图片生成接口免费的新用户体验额度在线 API 文档和调试工具。选择平台时建议关注下面几点文档是否完整是否有代码示例是否提供免费额度方便学习和测试接口格式是否通用比如是否兼容 OpenAI 风格的调用方式是否有内容安全审核避免生成违规内容。本文无法替你确定某一家平台因为各家政策会调整。你只需要记住一个通用原则去官网注册拿到自己的 API Key然后按官方文档调用。下面所有示例代码都会留出“替换成你的平台配置”的位置。3. 核心知识点API 调用与鉴权基础3.1 API、SDK 和 API Key先解释三个常听到的词API应用程序编程接口。你可以理解成官方开的“窗口”你的程序通过这个窗口向平台发送请求平台把 AI 处理结果返回给你。SDK软件开发工具包。平台把 API 封装成更易用的代码库你安装后直接调用函数即可不必自己拼 HTTP 请求。API Key你的访问凭证。相当于一把钥匙调用接口时带着它平台才知道你是谁、有没有权限、用了多少额度。不管平台怎么变化这三个概念是通用的。3.2 一个最小请求的构成当你的程序调用一个 AI 平台的接口时本质上发送的是一个 HTTP 请求。以对话接口为例请求中通常包含请求地址URL请求头Headers其中包含 API Key 和内容类型请求体Body其中包含模型名、消息内容和参数。图片生成接口也类似区别在于请求体里会额外包含图片尺寸、生成数量、提示词等信息返回值里则可能是图片地址或 Base64 编码的图片数据。3.3 常见鉴权方式不同平台的鉴权方式略有不同常见有两种直接通过 Bearer Token 传递在 Header 中加上Authorization: Bearer 你的API Key平台自定义 Header在 Header 中加上api_key: 你的API Key或类似字段。后面代码示例以兼容 OpenAI 风格的方式编写同时会明确标注“这里需要替换成你的平台要求的字段”。4. 实战用 Python 搭建“对话 文生图”小工具正式代码之前先说明设计思路。我们要做的是一个命令行小工具支持两个功能输入问题返回 AI 的文字回答输入图片描述生成图片并保存到本地。这样做的好处是结构清晰你可以在chat()和draw()两个函数上继续扩展比如接入 Web 界面。4.1 项目结构ai-tool/ ├── main.py ├── requirements.txt └── images/ └── 生成的图片会保存在这里4.2 安装依赖在项目目录下创建requirements.txt写入以下内容requests openai然后执行pip install -r requirements.txt如果你的平台兼容 OpenAI SDK安装openai后就可以直接使用如果平台只提供 HTTP 接口requests也足够了。4.3 编写核心代码下面我们分步编写main.py。第一步定义全局配置。# 文件路径ai-tool/main.py import requests import json import os from pathlib import Path # 配置区 # 下面三项需要替换成你所用平台的信息 API_KEY 你的API Key BASE_URL 你的平台接口地址例如 https://api.example.com/v1 CHAT_MODEL 你的平台对话模型名 IMAGE_MODEL 你的平台绘图模型名 # IMAGE_DIR Path(images) IMAGE_DIR.mkdir(exist_okTrue)这里把配置统一放在顶部方便维护。请务必前往你所用平台的官网根据文档中提供的模型标识填写CHAT_MODEL和IMAGE_MODEL。第二步实现对话函数。def chat(prompt: str): 调用对话接口返回 AI 文字回答 url f{BASE_URL}/chat/completions headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { model: CHAT_MODEL, messages: [ {role: system, content: 你是一个乐于助人的助手。}, {role: user, content: prompt} ] } resp requests.post(url, headersheaders, jsonpayload, timeout60) resp.raise_for_status() data resp.json() return data[choices][0][message][content]第三步实现图片生成函数。def draw(prompt: str, save_name: str output.png): 调用文生图接口把图片保存到本地 url f{BASE_URL}/images/generations headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { model: IMAGE_MODEL, prompt: prompt, size: 1024x1024 } resp requests.post(url, headersheaders, jsonpayload, timeout120) resp.raise_for_status() data resp.json() # 不同平台返回字段可能不同常见两种url 或 b64_json image_url data.get(data, [{}])[0].get(url) b64_json data.get(data, [{}])[0].get(b64_json) if image_url: img_resp requests.get(image_url, timeout60) img_resp.raise_for_status() save_path IMAGE_DIR / save_name save_path.write_bytes(img_resp.content) print(f图片已保存{save_path}) elif b64_json: import base64 img_bytes base64.b64decode(b64_json) save_path IMAGE_DIR / save_name save_path.write_bytes(img_bytes) print(f图片已保存{save_path}) else: print(未识别到图片数据请检查平台返回格式。)第四步添加命令行入口。def main(): print(欢迎使用 AI 小工具) print(1. 输入对话问题) print(2. 输入图片描述) print(0. 退出) while True: cmd input(\n请选择功能1/2/0).strip() if cmd 1: prompt input(请输入你的问题).strip() if not prompt: continue answer chat(prompt) print(AI 回答, answer) elif cmd 2: prompt input(请描述你想生成的图片).strip() if not prompt: continue draw(prompt) elif cmd 0: print(再见) break else: print(无效输入请重新输入。) if __name__ __main__: main()4.4 运行与验证在项目目录下执行python main.py然后依次测试输入1再输入“用一句话介绍 Python 的 with 语句”观察是否有正常文字回复输入2再输入“一只坐在月球上的橘猫星空背景插画风格”观察images目录下是否生成了图片。如果都能通过说明你的 API 配置正确整体链路已经跑通。4.5 代码中需要重点理解的三个地方Authorization: Bearer {API_KEY}这是向平台证明自己身份的认证头不要泄露给他人。messages参数对话接口采用消息列表方式system消息用于设定 AI 角色user消息是用户输入。timeout参数图片生成通常比对话慢所以绘图接口的请求超时设得更大避免请求未完成就抛异常。5. 实战用 Flask 搭建手机也能访问的 Web 页面命令行工具虽然能用但对手机用户不够友好。下面我们用 Flask 写一个极简 Web 页面把对话和绘画能力搬到浏览器上这样手机和电脑都能访问。5.1 安装 Flask继续在项目目录下执行pip install flask5.2 创建 Web 服务文件在项目目录下新建web_app.py。# 文件路径ai-tool/web_app.py from flask import Flask, request, jsonify, render_template_string import main app Flask(__name__) HTML !DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleAI 对话与绘画工具/title style body { font-family: Microsoft YaHei, sans-serif; max-width: 600px; margin: 40px auto; padding: 0 16px; background: #f5f6f8; } textarea { width: 100%; height: 80px; font-size: 16px; padding: 12px; box-sizing: border-box; } button { margin: 8px 8px 8px 0; padding: 12px 24px; font-size: 16px; cursor: pointer; border: none; border-radius: 6px; background: #4a7cf7; color: #fff; } .result { margin-top: 16px; padding: 16px; background: #fff; border-radius: 8px; white-space: pre-wrap; word-break: break-all; } img { max-width: 100%; margin-top: 16px; border-radius: 8px; } /style /head body h2AI 对话与绘画工具/h2 textarea idprompt placeholder输入问题或输入图片描述.../textarea div button onclicksendChat()发送对话/button button onclicksendDraw()生成图片/button /div div idresult/div script async function sendChat() { const prompt document.getElementById(prompt).value.trim(); if (!prompt) return; const res await fetch(/chat, { method: POST, headers: {Content-Type: application/json}, body: JSON.stringify({prompt}) }); const data await res.json(); document.getElementById(result).innerHTML div classresultbAI 回答/b${data.answer}/div ; } async function sendDraw() { const prompt document.getElementById(prompt).value.trim(); if (!prompt) return; const res await fetch(/draw, { method: POST, headers: {Content-Type: application/json}, body: JSON.stringify({prompt}) }); const data await res.json(); if (data.image) { document.getElementById(result).innerHTML div classresult图片生成成功/div img src${data.image} alt生成图片 / ; } else { document.getElementById(result).innerHTML data.error || 生成失败; } } /script /body /html app.route(/) def index(): return render_template_string(HTML) app.route(/chat, methods[POST]) def chat_api(): data request.get_json() prompt data.get(prompt, ) try: answer main.chat(prompt) return jsonify({answer: answer}) except Exception as e: return jsonify({error: str(e)}), 500 app.route(/draw, methods[POST]) def draw_api(): data request.get_json() prompt data.get(prompt, ) try: # 保存到固定文件名便于页面显示 main.draw(prompt, save_namelatest_web.png) image_url /images/latest_web.png return jsonify({image: image_url}) except Exception as e: return jsonify({error: str(e)}), 500 # 让 /images 目录支持静态访问 from flask import send_from_directory app.route(/images/path:filename) def images(filename): return send_from_directory(main.IMAGE_DIR, filename) if __name__ __main__: app.run(host0.0.0.0, port5000, debugTrue)5.3 启动服务并验证在项目目录下执行python web_app.py浏览器访问http://127.0.0.1:5000你会看到页面。输入问题后点击“发送对话”下方会显示 AI 的回复输入图片描述后点击“生成图片”下方会显示生成的图片。5.4 手机如何访问同一服务想让手机访问通常有下面两种方式同一局域网手机和电脑连同一个 Wi-Fi电脑上执行ipconfigWindows或ifconfigmacOS/Linux查看局域网 IP然后在手机浏览器输入http://电脑IP:5000。内网穿透或公网部署如果你希望在外面也能访问可以借助云服务器或内网穿透工具但要注意安全不要暴露 API Key。这里需要特别提醒web_app.py中的服务仅供学习使用直接放到公网会因为缺少鉴权而存在安全风险。生产环境必须加登录认证、HTTPS 和访问频率限制。6. 常见问题与排查思路6.1 问题排查表问题现象常见原因解决思路提示“模型不存在”填写的模型名与平台不符登录平台官网文档复制准确的模型标识提示“鉴权失败”API Key 错误、过期或没有权限重新生成 API Key检查是否有多余空格提示“请求超时”网络波动或生成时间过长增大 timeout或更换更稳定的网络环境生成了空白图片Prompt 触发内容审核调整描述避免敏感和违规内容手机无法访问页面网页服务未监听 0.0.0.0确认app.run(host0.0.0.0)Web 页面返回 500平台限量、余额不足或代码异常查看后台日志核对返回错误信息6.2 几个高频踩坑点环境变量问题不要把 API Key 硬编码后传到公开仓库。更规范的做法是读环境变量免费额度用尽很多平台的新用户额度有限用完后会返回“余额不足”或“限流”相关错误图片尺寸不支持不是所有平台都支持1024x1024要阅读文档确认可选尺寸Python 版本过低旧版本 Python 对一些新语法或 HTTPS 证书支持不好建议使用 Python 3.9 以上。6.3 排查通用命令如果接口请求出问题可以用curl快速验证。curl -X POST https://你的平台接口地址/v1/chat/completions \ -H Authorization: Bearer 你的APIKey \ -H Content-Type: application/json \ -d {model:你的模型名,messages:[{role:user,content:你好}]}如果curl能返回正常结果说明问题大概率出在代码端如果curl也报错就说明 API Key、模型名、网络或平台状态有问题。7. 最佳实践与工程建议7.1 密钥安全API Key 是身份凭证泄露后别人可以消耗你的额度甚至利用你的账号做违规事情。基本要求是不要把密钥写死在客户端代码里上传到 GitHub 前用.gitignore排除配置文件建议使用环境变量或本地配置文件保存密钥发现泄漏后立刻在平台后台重置。7.2 成本控制与调用频率大模型 API 通常按 token 或按张数计费。为了避免成本失控建议精确控制请求参数中的max_tokens、图片尺寸和生成数量对话时避免无限累积历史消息可以只保留最近几轮在代码里设置每日调用上限或频率限制先用小成本调用测试确认效果后再放到生产环境。7.3 内容安全与合规所有 AI 平台都有内容安全审核机制。生成内容和图片时开发者应当增加输入过滤拦截明显违规的 Prompt在用户协议中明确生成内容的使用边界记录调用日志出现问题时方便追溯不对生成结果做盲目“完全可信”的假设尤其是涉及医疗、法律、金融等领域。7.4 从脚本到生产如果想把这个小工具改造成正式产品建议往下面的方向演进使用异步任务队列处理图片生成避免 HTTP 请求长时间阻塞引入 Redis 或数据库缓存生成结果减少重复调用增加用户登录注册和额度管理部署到云服务器配置 Nginx 反向代理和 HTTPS。8. 总结与下一步本文围绕“在国内合规使用 AI 对话与 AI 绘画能力”这个主题从概念、环境准备、API 基础讲到了完整的 Python 命令行工具和 Web 页面应用。读完并动手实践后你应该已经掌握如何选择合规的 AI 开放平台如何调用对话接口和绘图接口如何把 AI 能力封装成自己项目的一部分如何在手机和电脑上访问自建 AI 小工具常见报错的排查思路和密钥、成本、内容安全的最佳实践。下一步建议你按自己的需求继续扩展如果你想做产品可以完善 Web 页面增加用户系统如果你想深入算法可以去学习提示词工程和模型微调基础如果你更关心工程化可以研究异步任务、消息队列和模型网关。AI 工具每天都在演进但“看懂文档、拿到密钥、成功调用第一个接口”这套基本功不会变。照着这篇文章跑通一遍你就拥有了搭建各类 AI 应用的起点。如果中途遇到问题建议优先查看平台返回的原始错误信息再去查官方文档这比盲目搜索更高效。希望这篇教程对你有帮助有任何问题也欢迎在评论区一起交流。