Skip to content

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 / 次请求

参数

参数类型必填描述
promptstring要优化的提示词文本
modelstring提示词目标模型(提供信息以帮助定制优化)
contextstring使用场景的附加上下文,用于指导优化

请求

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_promptstring你的原始提示词输入
optimized_promptstringAI 优化后的提示词
explanationstring为什么优化后的版本更好
score_beforeinteger原始提示词评分(0-100)
score_afterinteger优化后提示词评分(0-100)
suggestionsarray具体改进建议列表

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 这样的嵌套字段;评分字段 是 float64NewClient 返回 (*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))