热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
本提示词专门用于生成基于Python requests库的API请求代码,能够根据用户提供的API端点、请求方法、参数等信息,自动构建完整且规范的HTTP请求代码。该提示词支持多种HTTP方法、参数类型和认证方式,适用于RESTful API开发、接口测试、数据获取等多种场景,帮助开发者快速生成可靠的技术实现方案。
import os
import json
from typing import Any, Dict, List, Optional
import requests
from requests import Response, Session
from requests.adapters import HTTPAdapter
from urllib3.util import Retry
TEXTCRAFT_API_URL = "https://api.textcraft.example.com/v1/text/generate"
ENV_TOKEN_VAR = "TEXTCRAFT_API_TOKEN"
def _build_session(
total_retries: int = 3,
backoff_factor: float = 0.5,
status_forcelist: Optional[List[int]] = None,
) -> Session:
"""
创建带重试策略的 requests Session。
"""
if status_forcelist is None:
status_forcelist = [429, 500, 502, 503, 504]
retry = Retry(
total=total_retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
allowed_methods=frozenset(["POST"]),
raise_on_status=False,
respect_retry_after_header=True,
)
adapter = HTTPAdapter(max_retries=retry)
session = requests.Session()
session.mount("https://", adapter)
session.mount("http://", adapter)
return session
def generate_text(
prompt: str,
model: str = "tc-1.2-instruct",
*,
max_tokens: int = 380,
temperature: float = 0.7,
top_p: float = 0.9,
stop: Optional[List[str]] = None,
api_url: str = TEXTCRAFT_API_URL,
token: Optional[str] = None,
timeout: float = 15.0,
header_name: str = "Authorization",
prefix: str = "Bearer",
session: Optional[Session] = None,
) -> Dict[str, Any]:
"""
调用 TextCraft 文本生成 API。
参数:
prompt: 生成文本的提示词。
model: 模型名称。
max_tokens: 最多生成 token 数。
temperature: 随机性参数,范围建议 [0, 1]。
top_p: nucleus sampling 参数,范围建议 [0, 1]。
stop: 停止序列列表,模型生成到任一序列时会停止。
api_url: API 端点。
token: 访问令牌;若为 None,则从环境变量 TEXTCRAFT_API_TOKEN 读取。
timeout: 单次请求超时时间(秒)。
header_name: 认证头字段名(默认 Authorization)。
prefix: 认证前缀(默认 Bearer)。
session: 可选自定义 requests.Session。
返回:
解析后的 JSON 字典。
"""
# 安全获取 Token(不在代码中硬编码)
api_token = token or os.getenv(ENV_TOKEN_VAR)
if not api_token:
raise ValueError(
f"Missing API token. Provide `token` or set environment variable {ENV_TOKEN_VAR}."
)
# 基本入参校验(避免发送无效请求)
if not isinstance(prompt, str) or not prompt.strip():
raise ValueError("`prompt` must be a non-empty string.")
if max_tokens <= 0:
raise ValueError("`max_tokens` must be a positive integer.")
if not (0.0 <= temperature <= 2.0):
raise ValueError("`temperature` should be within [0.0, 2.0].")
if not (0.0 <= top_p <= 1.0):
raise ValueError("`top_p` should be within [0.0, 1.0].")
if stop is not None and not all(isinstance(s, str) for s in stop):
raise ValueError("`stop` must be a list of strings when provided.")
headers = {
header_name: f"{prefix} {api_token}",
"Content-Type": "application/json",
"Accept": "application/json",
"User-Agent": "textcraft-requests-client/1.0 (+https://example.com)",
}
payload: Dict[str, Any] = {
"model": model,
"prompt": prompt,
"max_tokens": max_tokens,
"temperature": temperature,
"top_p": top_p,
}
if stop is not None:
payload["stop"] = stop
sess = session or _build_session()
try:
resp: Response = sess.post(
api_url,
headers=headers,
json=payload,
timeout=timeout,
)
except requests.exceptions.Timeout as exc:
raise TimeoutError(f"Request timed out after {timeout} seconds.") from exc
except requests.exceptions.RequestException as exc:
# 覆盖网络类错误,如连接异常、证书问题等
raise ConnectionError(f"Network error occurred: {exc}") from exc
# 状态码检查与错误信息尽量友好
if not (200 <= resp.status_code < 300):
# 尝试解析服务端错误详情
err_detail = None
try:
err_detail = resp.json()
except Exception:
err_detail = resp.text[:1000] # 截断,避免过长
raise RuntimeError(
f"API request failed with status {resp.status_code}. Details: {err_detail}"
)
try:
data = resp.json()
except json.JSONDecodeError as exc:
snippet = resp.text[:1000]
raise ValueError(f"Failed to parse JSON response. Body snippet: {snippet}") from exc
return data
if __name__ == "__main__":
# 示例演示:从环境变量读取 Token 并发起请求
demo_prompt = (
"请根据以下变更日志,生成一份面向用户的中文发布说明(包含亮点、问题修复、升级建议、兼容性说明)。\n\n"
"变更日志:\n"
"- 新增“跨设备同步”功能,支持手机与平板实时同步日程;\n"
"- 优化搜索性能,平均响应时间从320ms降至110ms;\n"
"- 修复重复提醒偶发问题(Issue#4721);\n"
"- 默认主题新增“雾蓝”;\n"
"- iOS 13 以下不再提供更新。\n\n"
"语气:专业但友好;\n"
"格式:分级标题+项目符号;\n"
"长度:200-300字;\n"
"避免:营销式夸张用语。"
)
try:
result = generate_text(
prompt=demo_prompt,
model="tc-1.2-instruct",
max_tokens=380,
temperature=0.7,
top_p=0.9,
stop=["```"],
)
print(json.dumps(result, ensure_ascii=False, indent=2))
except Exception as e:
# 生产环境可改为日志记录,但避免输出敏感信息(如 Token)
print(f"Error: {e}")
from your_module import generate_text
prompt = (
"请根据以下变更日志,生成一份面向用户的中文发布说明(包含亮点、问题修复、升级建议、兼容性说明)。\n\n"
"变更日志:\n"
"- 新增“跨设备同步”功能,支持手机与平板实时同步日程;\n"
"- 优化搜索性能,平均响应时间从320ms降至110ms;\n"
"- 修复重复提醒偶发问题(Issue#4721);\n"
"- 默认主题新增“雾蓝”;\n"
"- iOS 13 以下不再提供更新。\n\n"
"语气:专业但友好;\n"
"格式:分级标题+项目符号;\n"
"长度:200-300字;\n"
"避免:营销式夸张用语。"
)
result = generate_text(
prompt=prompt,
model="tc-1.2-instruct",
max_tokens=380,
temperature=0.7,
top_p=0.9,
stop=["```"], # 可选
)
# 打印或处理返回 JSON
import json
print(json.dumps(result, ensure_ascii=False, indent=2))
result = generate_text(
prompt=prompt,
token=os.getenv("TEXTCRAFT_API_TOKEN"), # 或从安全存储读取
)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
TextCraft Chat API 调用示例(requests + Basic Auth + 流式响应处理)
特性
- 使用 requests.Session 复用连接
- Basic 认证从环境变量读取,避免硬编码敏感信息
- 支持流式(text/event-stream)与非流式(application/json)两种返回
- 健壮的错误处理与超时设置
- 轻量的SSE解析器,能兼容常见的 data: 行式分片
"""
import os
import sys
import json
import contextlib
from typing import Generator, Iterable, Optional, Union, Dict, Any
import requests
from requests.auth import HTTPBasicAuth
from requests.exceptions import RequestException, Timeout, HTTPError, ConnectionError
DEFAULT_BASE_URL = "https://api.textcraft.example.com"
DEFAULT_TIMEOUT = (10, 300) # (connect_timeout, read_timeout)
class TextCraftClient:
"""
TextCraft API 客户端(Basic Auth)
"""
def __init__(
self,
base_url: str = DEFAULT_BASE_URL,
username: Optional[str] = None,
password: Optional[str] = None,
timeout: Union[float, tuple] = DEFAULT_TIMEOUT,
verify: Union[bool, str] = True,
session: Optional[requests.Session] = None,
) -> None:
"""
参数:
- base_url: API服务基础URL, 如 https://api.textcraft.example.com
- username: 基本认证用户名(建议从环境变量读取)
- password: 基本认证密码(建议从环境变量读取)
- timeout: 超时设置,float或(connect, read)元组
- verify: TLS证书校验,为True或CA证书路径
- session: 可注入自定义requests.Session
"""
self.base_url = base_url.rstrip("/")
self.timeout = timeout
self.verify = verify
self.session = session or requests.Session()
# 从环境变量兜底读取凭证,避免硬编码敏感信息
self.username = username or os.getenv("TEXTCRAFT_USERNAME")
self.password = password or os.getenv("TEXTCRAFT_PASSWORD")
if not self.username or not self.password:
raise ValueError(
"缺少Basic认证凭证。请通过参数或环境变量 "
"TEXTCRAFT_USERNAME / TEXTCRAFT_PASSWORD 提供。"
)
self.auth = HTTPBasicAuth(self.username, self.password)
self.default_headers = {
"User-Agent": "textcraft-python/1.0",
}
def _endpoint(self, path: str) -> str:
return f"{self.base_url.rstrip('/')}/{path.lstrip('/')}"
@staticmethod
def _extract_stream_piece(obj: Dict[str, Any]) -> Optional[str]:
"""
尝试从常见的SSE JSON数据结构中提取文本片段。
若结构未知,返回None让上层以原始字符串回退。
兼容多种常见字段命名。
"""
# 常见结构1:choices[].delta.content(OpenAI风格)
try:
return obj["choices"][0]["delta"].get("content")
except Exception:
pass
# 常见结构2:choices[].message.content(最终消息)
try:
return obj["choices"][0]["message"].get("content")
except Exception:
pass
# 常见结构3:直接 content 字段
try:
if isinstance(obj.get("content"), str):
return obj["content"]
except Exception:
pass
return None
@staticmethod
def _iter_sse_lines(resp: requests.Response) -> Iterable[str]:
"""
简单SSE解析:只处理 data: 行;忽略注释和空行。
以行作为边界,不做多行拼接;适合多数token级别增量场景。
"""
for raw in resp.iter_lines(decode_unicode=True):
if not raw:
continue
if raw.startswith(":"):
# SSE注释行
continue
if raw.startswith("data:"):
data = raw[5:].strip()
# 约定的结束信号
if data == "[DONE]":
return
yield data
def chat(
self,
messages: Iterable[Dict[str, str]],
model: str = "tc-1.2-chat",
temperature: float = 0.3,
stream: bool = True,
max_tokens: int = 600,
extra_headers: Optional[Dict[str, str]] = None,
) -> Union[Dict[str, Any], Generator[str, None, None]]:
"""
发起聊天请求。
- 若 stream=True,返回一个生成器,逐段产出文本片段(str)。
- 若 stream=False,返回一次性JSON结果(dict)。
注意:使用完毕后生成器会自动关闭底层响应,确保资源释放。
"""
url = self._endpoint("/v1/chat")
payload = {
"model": model,
"messages": list(messages),
"temperature": float(temperature),
"stream": bool(stream),
"max_tokens": int(max_tokens),
}
headers = dict(self.default_headers)
# 根据是否流式设置Accept
if stream:
headers["Accept"] = "text/event-stream, application/json;q=0.9"
else:
headers["Accept"] = "application/json"
headers["Content-Type"] = "application/json"
if extra_headers:
headers.update(extra_headers)
try:
if stream:
resp = self.session.post(
url,
headers=headers,
json=payload,
auth=self.auth,
timeout=self.timeout,
verify=self.verify,
stream=True,
)
resp.raise_for_status()
ctype = (resp.headers.get("Content-Type") or "").lower()
is_sse = "text/event-stream" in ctype
@contextlib.contextmanager
def _closer(r: requests.Response):
try:
yield
finally:
# 确保连接回收
r.close()
def _generator() -> Generator[str, None, None]:
with _closer(resp):
if is_sse:
for data in self._iter_sse_lines(resp):
# 优先尝试解析JSON提取文本片段
piece = None
if data and (data.startswith("{") or data.startswith("[")):
try:
obj = json.loads(data)
piece = self._extract_stream_piece(obj)
# 若无法提取但是JSON,回退为紧凑字符串输出
if piece is None:
piece = json.dumps(obj, ensure_ascii=False)
except json.JSONDecodeError:
# 非JSON片段,按原始字符串返回
piece = data
else:
piece = data
if piece:
yield piece
else:
# 一些服务即使指定了stream也返回完整JSON
chunk = resp.content.decode(resp.encoding or "utf-8", errors="replace")
try:
obj = json.loads(chunk)
# 直接输出完整消息体(非流模式的兼容分支)
text = self._extract_stream_piece(obj) or json.dumps(obj, ensure_ascii=False)
yield text
except json.JSONDecodeError:
# 回退为原始文本
yield chunk
return _generator()
else:
resp = self.session.post(
url,
headers=headers,
json=payload,
auth=self.auth,
timeout=self.timeout,
verify=self.verify,
)
resp.raise_for_status()
return resp.json()
except HTTPError as e:
# 服务端返回非2xx
detail = None
if e.response is not None:
try:
detail = e.response.json()
except Exception:
detail = e.response.text
raise RuntimeError(f"HTTP错误: {e} | 详情: {detail}") from e
except Timeout as e:
raise TimeoutError(f"请求超时: {e}") from e
except ConnectionError as e:
raise ConnectionError(f"连接失败: {e}") from e
except RequestException as e:
raise RuntimeError(f"请求异常: {e}") from e
def main() -> None:
"""
可执行示例:以流式打印返回内容到标准输出。
"""
# 示例消息(来自问题描述)
messages = [
{
"role": "system",
"content": "你是一名资深中文写作助手,擅长将多段素材整合为结构清晰的文章。输出使用中文,格式为标题、导语、正文小节、结尾。"
},
{
"role": "user",
"content": "素材1:本周我们上线了“离线草稿”与“自动保存”功能,解决了弱网环境内容丢失问题;素材2:新增草稿历史版本对比,并提供一键恢复;读者对象:写作爱好者与自媒体作者;风格:实用、清晰、适度幽默;长度:约600字。"
},
]
client = TextCraftClient(
base_url="https://api.textcraft.example.com",
# 为安全起见,用户名/密码请通过环境变量 TEXTCRAFT_USERNAME / TEXTCRAFT_PASSWORD 提供
# username=os.getenv("TEXTCRAFT_USERNAME"),
# password=os.getenv("TEXTCRAFT_PASSWORD"),
timeout=(10, 300),
verify=True,
)
# 流式打印
try:
stream = client.chat(
messages=messages,
model="tc-1.2-chat",
temperature=0.3,
stream=True,
max_tokens=600,
)
if isinstance(stream, dict):
# 极少数情况下服务端可能返回非流式JSON(即使指定了stream=True)
sys.stdout.write(json.dumps(stream, ensure_ascii=False))
sys.stdout.flush()
else:
for piece in stream:
sys.stdout.write(piece)
sys.stdout.flush()
except Exception as e:
# 统一错误输出
print(f"\n调用失败: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()
参数说明:
使用示例:
# 1) 设置环境变量(Linux/macOS)
export TEXTCRAFT_USERNAME="test_analyst"
export TEXTCRAFT_PASSWORD="s3curePwd!42"
# Windows (PowerShell)
# $env:TEXTCRAFT_USERNAME="test_analyst"
# $env:TEXTCRAFT_PASSWORD="s3curePwd!42"
# 2) 运行脚本
python textcraft_client.py
或在代码中以库方式调用(非流式一次性结果示例):
from textcraft_client import TextCraftClient
client = TextCraftClient()
resp = client.chat(
messages=[{"role":"user","content":"请用一句话介绍你自己"}],
model="tc-1.2-chat",
stream=False,
max_tokens=100
)
print(resp)
以更少时间、更少试错,快速拿到可运行、可复用的Python接口请求代码。通过自然语言描述接口地址、请求方式、关键参数与认证方式,即可一键生成包含:完整代码、参数说明、调用示例与注意事项的“交付四件套”。核心价值:标准化团队写法、内置安全与错误处理、覆盖多种请求场景,帮助开发、测试与数据同学从联调到上线全流程提速,显著提升交付质量与稳定性。
快速生成可运行的调用代码,打通测试与线上环境,覆盖常见请求场景并加入错误处理,减少联调与排障时间。
构建稳定的数据采集脚本,灵活设置筛选与分页参数,可靠抓取外部数据写入数据源,失败可重试并记录原因。
面向接口测试快速产出用例脚本,覆盖正常与异常路径,批量执行回归测试,缩短用例维护与复用成本。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
半价获取高级提示词-优惠即将到期