非流式对话
import requests # 1. 配置 API 密钥和请求地址 API_KEY = "YOUR_OPENAI_API_KEY" URL = "https://openai.com" # 2. 设置请求头(必须包含 Authorization 和 Content-Type) headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # 3. 构建请求体(与官方库的参数完全一致) data = { "model": "gpt-4o", "messages": [ {"role": "system", "content": "你是一个精炼的助手。"}, {"role": "user", "content": "什么是闭包?用一句话回答。"} ], "stream": False # 确保设置为 False,表示非流式一次性返回 } # 4. 发送 POST 请求 response = requests.post(URL, headers=headers, json=data) # 5. 解析并提取结果 if response.status_code == 200: result = response.json() # 按照 OpenAI 的标准 JSON 结构逐层提取文本 answer = result["choices"][0]["message"]["content"] print(answer) else: print(f"请求失败,状态码:{response.status_code}") print(response.text) ==========================dj获取Authorization和Content-Type # 推荐使用 .get(),防止请求头不存在时程序报错崩溃 auth_header = request.META.get('HTTP_AUTHORIZATION') if auth_header: # 此时 auth_header 的内容通常是 "Bearer your_api_key" # 如果需要提取出纯粹的 API_KEY: try: token_type, api_key = auth_header.split(' ') print(f"提取到的 API KEY 是: {api_key}") except ValueError: print("Authorization 格式不正确") else: print("未携带 Authorization 请求头") def my_view(request): # 方式一:使用 Django 提供的快捷属性(推荐,最干净,只返回 "application/json") content_type = request.content_type # 方式二:从 request.META 中获取 content_type_alt = request.META.get('CONTENT_TYPE') print(f"Content-Type 是: {content_type}")import asyncio import json import httpx #strem async def main(): API_KEY = "YOUR_OPENAI_API_KEY" URL = "https://openai.com" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } data = { "model": "gpt-4o", "messages": [ {"role": "user", "content": "请写一首关于写代码的现代诗。"} ], "stream": True # 1. 必须设置为 True,开启流式传输 } # 2. 使用 client.stream() 以流式上下文启动异步 POST 请求 async with httpx.AsyncClient() as client: async with client.stream("POST", URL, headers=headers, json=data) as response: if response.status_code != 200: print(f"请求失败: {response.status_code}") return # 3. 按行迭代读取服务器发送过来的数据 async for line in response.aiter_lines(): # 过滤掉空行 if not line.strip(): continue # OpenAI 规范:每行数据都以 "data: " 开头 if line.startswith("data: "): content = line[6:].strip() # 移除 "data: " 前缀 # 4. 判断流是否结束。OpenAI 传输结束时会发送 [DONE] if content == "[DONE]": break try: # 5. 解析每一行的 JSON 片段 chunk_json = json.loads(content) # 提取当前片段生成的文本(注意结构与非流式不同,是 delta 而不是 message) delta = chunk_json["choices"][0]["delta"] if "content" in delta: text_token = delta["content"] print(text_token, end="", flush=True) # 实时打印,不换行 except (json.JSONDecodeError, KeyError, IndexError): continue # 运行异步函数 asyncio.run(main())方法一:使用 Fiddler / Mitmproxy 强行拦截(最推荐,成功率高)
即使是
.exe,它在发起 HTTPS 请求时,绝大多数情况下仍然会遵循 Windows 系统的代理设置(WinINet/WinHTTP)。
- 准备代理工具:下载并安装Fiddler Classic或Mitmproxy。
- 开启 HTTPS 解密:
- 以 Fiddler 为例:点击菜单栏
Tools->Options->HTTPS。- 勾选
Decrypt HTTPS traffic。- 弹窗提示安装证书时,必须点击“是 (Yes)”,将 Fiddler 的根证书安装到 Windows 系统的受信任根证书颁发机构中。
- 设置全局代理:Fiddler 启动后会自动接管 Windows 系统的全局代理。
- 运行
.exe抓包:
- 运行你的闭源
.exe程序,触发 API 请求。- 检查 Fiddler 左侧列表中是否有该 API 网址。如果有,点击它,在右侧的
Inspectors->TextView或JSON选项卡中就能直接看到明文的请求和回复。⚠️ 注意(可能遇到的坑):如果运行
.exe时,Fiddler 没有任何流量,或者.exe报错提示“证书校验失败(SSL/TLS Certificate Verification Failed)”,说明该程序开启了证书固定(SSL Pinning)或者不走系统代理。请看下面的解决方法。方法二:针对不走系统代理的
.exe(使用 Proxifier 强行路由)如果
.exe内部硬编码忽略了系统代理,导致 Fiddler 抓不到包,你需要用Proxifier软件强行将该.exe的流量塞给 Fiddler。
- 配置 Fiddler 允许远程连接:
- 在 Fiddler 的
Tools->Options->Connections中,勾选Allow remote computers to connect。- 记住 Fiddler 的默认端口是
8888。重启 Fiddler。- 配置 Proxifier:
- 下载并打开 Proxifier。
- 点击
Profile->Proxy Servers->Add。- Address 填写
127.0.0.1,Port 填写8888,Protocol 选择HTTPS(或 HTTP),点击 OK 保存。- 设置特定抓包规则:
- 点击
Profile->Proxification Rules->Add。- 在
Applications框中,输入你那个.exe的进程文件名(例如my_program.exe)。- 在底部的
Action下拉菜单中,选择你刚才添加的127.0.0.1:8888代理。- 点击 OK。
- 运行程序:此时 Proxifier 会强制该
.exe的所有网络流量通过 Fiddler,你可以在 Fiddler 中直接查看明文。方法三:使用系统级抓包工具 eBPF / Fiddler Everywhere
如果上述方法因为证书固定(SSL Pinning)导致程序直接闪退或报错,你需要使用更底层的注入手段:
- 使用具有“逆向”功能的工具:可以使用Reqable(一款现代网络调试工具),它针对 Flutter、Python 等打包的 应用提供了很强的自动跳过证书检查或强制代理功能。
上传的图片是一个2x3的网格组合图,包含5张参考图,请准确识别并区分每一个元素:
- 第一行左边(图1):角色A,他是【输入角色A的特征,如:金发穿红衣的年轻男子】。
- 第一行中间(图2):角色B,她是【输入角色B的特征,如:黑发穿皮衣的女子】。
- 第一行右边(图3):角色C,他是【输入角色C的特征,如:发蓝光的机器人】。
- 第二行左边(图4):角色D,他是【输入角色D的特征,如:白胡子的老头】。
- 第二行中间(图5):核心场景,这是一个【输入对这唯一场景的描述,如:霓虹闪烁的赛博朋克深夜街道】。
视频生成任务:
请消除拼图的网格线,将这4个角色(角色A、B、C、D)同时放进“核心场景”中。生成一段流畅、高画质的电影感视频,让这四个人在这个场景里共同互动。
具体动作:【在这里输入你想要的剧情,例如:角色A和角色B正在并肩聊天,角色C(机器人)从他们身边走过,而角色D在背景中注视着他们。】
请务必保持这4个角色的面部、服装特征与原图高度一致,并完美还原场景图中的所有视觉细节。
