Prompt Coach API
AI 驱动的提示词优化服务。分析你的提示词在清晰度、具体性和有效性方面的表现,然后为更好的 LLM 性能重写提示词。返回带评分的前后对比和可操作的改进建议。
基础 URL
https://api.jarvisclaw.ai/v1认证
在 Authorization header 中包含你的 API 密钥:
Authorization: Bearer YOUR_API_KEY此端点支持 x402。每次请求通过 x402 协议 header 支付 $0.002,或从你的钱包余额中扣除。
端点
POST /prompt-coach/optimize
优化提示词以获得更好的 LLM 交互效果。
定价
| 端点 | 价格 |
|---|---|
/prompt-coach/optimize | $0.002 / 次请求 |
参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
prompt | string | 是 | 要优化的提示词文本 |
model | string | 否 | 提示词目标模型(提供信息以帮助定制优化) |
context | string | 否 | 使用场景的附加上下文,用于指导优化 |
请求
json
{
"prompt": "帮我写一个爬虫的python脚本",
"model": "gpt-4o",
"context": "我需要抓取电商网站的商品价格用于比价"
}响应
json
{
"success": true,
"data": {
"original_prompt": "帮我写一个爬虫的python脚本",
"optimized_prompt": "使用 `requests` 和 `BeautifulSoup` 库编写一个 Python 脚本,从电商产品列表页面抓取产品名称和价格。脚本应该:1) 接受 URL 作为输入,2) 处理分页,3) 将产品名称、价格和 URL 提取为结构化格式,4) 导出结果为 CSV,5) 包含网络超时和缺失元素的错误处理。使用类型提示并包含文档字符串。",
"explanation": "原始提示词太模糊 — 没有指定抓取目标、库、输出格式或错误处理要求。优化版本提供了具体的结构、明确的交付物和技术约束,能产生可直接使用的代码。",
"score_before": 25,
"score_after": 88,
"suggestions": [
"指定确切的工具/库以避免歧义",
"定义预期的输出格式",
"包含错误处理要求",
"添加关于范围的约束(例如,分页、速率限制)"
]
}
}响应字段
| 字段 | 类型 | 描述 |
|---|---|---|
original_prompt | string | 你的原始提示词输入 |
optimized_prompt | string | AI 优化后的提示词 |
explanation | string | 为什么优化后的版本更好 |
score_before | integer | 原始提示词评分(0-100) |
score_after | integer | 优化后提示词评分(0-100) |
suggestions | array | 具体改进建议列表 |
SDK 示例
Python
python
from jarvisclaw import PromptCoachClient
client = PromptCoachClient(api_key="YOUR_API_KEY")
result = client.optimize(
prompt="帮我写一些代码",
model="gpt-4o",
context="构建一个任务管理应用的 REST API"
)
print(f"评分: {result['score_before']} → {result['score_after']}")
print(f"优化后: {result['optimized_prompt']}")
for suggestion in result['suggestions']:
print(f" 💡 {suggestion}")python
from jarvisclaw import PromptCoachClient
# x402: Agent 每次请求直接从钱包支付 $0.002
client = PromptCoachClient(private_key="0x<your-evm-private-key>")
result = client.optimize(
prompt="write code that does the thing",
model="gpt-4o",
context="Building a REST API for a task management app"
)
print(f"评分: {result['score_before']} → {result['score_after']}")
print(f"优化后: {result['optimized_prompt']}")
for suggestion in result['suggestions']:
print(f" 💡 {suggestion}")Go
go
package main
import (
"context"
"fmt"
"log"
jc "github.com/api-jarvisclaw/go-sdk/v2"
)
func main() {
ctx := context.Background()
client, err := jc.NewClient(jc.WithAPIKey("YOUR_API_KEY"))
if err != nil {
log.Fatal(err)
}
result, err := client.PromptCoach(ctx, jc.PromptCoachRequest{
Prompt: "帮我做一个网站",
Context: "我想要一个展示摄影作品的作品集网站",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("评分: %.1f → %.1f\n", result.ScoreBefore, result.ScoreAfter)
fmt.Printf("优化后: %s\n", result.OptimizedPrompt)
}go
package main
import (
"context"
"fmt"
"log"
jc "github.com/api-jarvisclaw/go-sdk/v2"
)
func main() {
ctx := context.Background()
// x402: Agent 每次请求直接从钱包支付 $0.002
client, err := jc.NewClient(jc.WithPrivateKey("0x<your-evm-private-key>"))
if err != nil {
log.Fatal(err)
}
result, err := client.PromptCoach(ctx, jc.PromptCoachRequest{
Prompt: "write code that does the thing",
Model: "openai/gpt-4o",
Context: "Building a REST API for a task management app",
OptimizeFor: "technical",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("评分: %.1f → %.1f\n", result.ScoreBefore, result.ScoreAfter)
fmt.Printf("优化后: %s\n", result.OptimizedPrompt)
for _, s := range result.Suggestions {
fmt.Printf(" - %s\n", s)
}
}PromptCoach 是 *Client 上的方法,不是 client.PromptCoach.Optimize 这样的嵌套字段;评分字段 是 float64。NewClient 返回 (*Client, error)。
PromptScore / /v1/prompt-coach/score 不可用
两个 SDK 都提供了仅评分的方法(Python 的 PromptCoachClient.score()、Go 的 client.PromptScore),它们请求 /v1/prompt-coach/score。该路由未在网关注册,调用返回 404。 请改用 optimize 并读取 score_before —— 它会顺带给出原始 prompt 的评分。
通过 AIP(意图协议)
Prompt Coach 也可作为 AIP 意图(prompt_optimization)使用,允许通过意图系统统一路由:
python
from jarvisclaw import IntentClient
# 同时支持 api_key 和 private_key
client = IntentClient(private_key="0x<your-evm-private-key>")
# intent 与 payload 是位置参数;execute() 原样返回上游响应
result = client.execute(
"prompt_optimization",
{
"prompt": "explain machine learning",
"model": "anthropic/claude-sonnet-4.6",
"context": "Technical blog post for senior engineers",
},
)
print(f"优化后: {result['optimized_prompt']}")
print(f"评分: {result['score_before']} → {result['score_after']}")go
client, _ := jc.NewClient(jc.WithPrivateKey("0x<your-evm-private-key>"))
raw, _ := client.Execute(ctx, jc.ExecuteRequest{
Intent: "prompt_optimization",
Payload: map[string]any{
"prompt": "explain machine learning",
"model": "anthropic/claude-sonnet-4.6",
"context": "Technical blog post for senior engineers",
},
})
fmt.Println(string(raw))