Python
依赖:pip install requests(Python 3.8+)
1) 非流式聊天
import os
import requests
BASE_URL = "https://ai.umeng.com"
API_KEY = os.getenv("UMENG_AI_KEY", "YOUR_API_KEY")
def chat(prompt: str, model: str = "auto") -> str:
payload = {
"model": model,
"enableThinking": False,
"messages": [{"role": "user", "content": prompt}],
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
resp = requests.post(f"{BASE_URL}/api/llm/chat",
json=payload, headers=headers, timeout=60)
resp.raise_for_status()
result = resp.json()
if not result.get("success"):
raise RuntimeError(result.get("msg", "接口返回失败"))
data = result["data"]
print(f"[路由] {data['meta']['actual_model']} [算力点] {data['usage']['cost_credits']}")
return data["content"]
if __name__ == "__main__":
print("回答:", chat("用一句话介绍牛顿第一定律"))2) 流式聊天(SSE)
import json
import os
import requests
BASE_URL = "https://ai.umeng.com"
API_KEY = os.getenv("UMENG_AI_KEY", "YOUR_API_KEY")
def chat_stream(prompt: str, model: str = "auto"):
payload = {
"model": model,
"enableThinking": False,
"messages": [{"role": "user", "content": prompt}],
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "text/event-stream",
"Content-Type": "application/json",
}
with requests.post(f"{BASE_URL}/api/llm/chat/stream",
json=payload, headers=headers, stream=True, timeout=120) as resp:
resp.raise_for_status()
event_type, data_buf = None, []
for raw in resp.iter_lines(decode_unicode=True):
if raw is None:
continue
if raw == "":
if event_type and data_buf:
obj = json.loads("\n".join(data_buf))
yield event_type, obj
event_type, data_buf = None, []
continue
if raw.startswith("event:"):
event_type = raw[6:].strip()
elif raw.startswith("data:"):
data_buf.append(raw[5:].lstrip())
if __name__ == "__main__":
for ev, payload in chat_stream("请用 Python 写一个 LRU 缓存"):
if ev == "delta" and payload.get("type") == "content":
print(payload.get("delta", ""), end="", flush=True)
elif ev == "done":
print(f"\n[完成] tokens={payload.get('total_tokens')} cost={payload.get('cost_credits')}")3) 图像生成
import re
import requests
payload = {
"model": "doubao-seedream-5-0-pro-260628",
"messages": [{"role": "user", "content": "一只在写代码的柯基"}],
"imageParams": {"size": "1024x1024", "quality": "low", "n": 1},
}
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
resp = requests.post(f"{BASE_URL}/api/llm/chat", json=payload, headers=headers, timeout=180)
data = resp.json()
markdown = data["data"]["content"]
image_url = re.search(r"\((https?://[^)]+)\)", markdown).group(1)
print("图片地址:", image_url)4) 视频生成(提交 + 轮询)
import time
import requests
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
# ① 提交任务
payload = {
"model": "wan2.5-t2v-preview",
"messages": [{"role": "user", "content": "一只橘猫在窗台上晒太阳"}],
"videoParams": {"resolution": "480P", "ratio": "16:9", "duration": 5},
}
resp = requests.post(f"{BASE_URL}/api/llm/chat", json=payload, headers=headers, timeout=30)
request_id = resp.json()["data"]["request_id"]
print("任务已提交:", request_id)
# ② 轮询结果(不会重复扣费)
for i in range(1, 41):
resp = requests.post(f"{BASE_URL}/api/llm/chat/video/result",
json={"requestId": request_id}, headers=headers, timeout=30)
data = resp.json()["data"]
print(f"第 {i} 次轮询,状态:{data['status']}")
if data["status"] == "SUCCEEDED":
print("视频地址:", data["video_url"])
print("扣费:", data["credits"], "算力点")
break
if data["status"] == "FAILED":
print("生成失败")
break
time.sleep(15)