POST
/
rest
/
track-request
curl --request POST \
  --url https://api.promptlayer.com/rest/track-request \
  --header 'Content-Type: application/json' \
  --data '{
  "function_name": "<string>",
  "kwargs": {},
  "request_response": {},
  "request_start_time": 123,
  "request_end_time": 123,
  "tags": [
    "<string>"
  ],
  "prompt_id": "<string>",
  "prompt_input_variables": {},
  "prompt_version": 123,
  "api_key": "<string>"
}'
{
  "success": true,
  "message": "<string>",
  "request_id": "<string>"
}

Track request allows you to send your LLM request to our platform. On success, this request will return a request_id which is necessary for track-score

Logging OpenAI Requests

You can use the following scripts to log requests made to OpenAI’s API. This will help you to track the request and response of the API.

Chat
import requests

# URL and headers
url = "http://api.promptlayer.com/track-request"
headers = {
    "Content-Type": "application/json",
}

# Data payload
data_payload = {
    "function_name": "openai.ChatCompletion.create",
    "kwargs": {
        "messages": [
            {
              "content": "You are a helpful AI assistant.",
              "role": "system"
            },
            {
              "content": "What's the weather like in Boston?",
              "role": "user"
            }
        ],
        "model": "gpt-3.5-turbo-16k",
        "function_call": "auto",
        "tools": [{
          "type": "function",
          "function": {
            "description": "Get the current weather in a given location",
            "name": "get_current_weather",
            "parameters": {
              "properties": {
                "location": {
                  "description": "The city and state, e.g. San Francisco, CA",
                  "type": "string"
                },
                "unit": {
                  "enum": [
                    "celsius",
                    "fahrenheit"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "location"
              ],
              "type": "object"
            }
          }
        }]
    },
    "request_response": {
        "choices": [
            {
                "index": 0,
                "message": {
                      "content": "",
                      "function_call": {
                        "arguments": "{\n\"location\": \"Boston, MA\"\n}",
                        "name": "get_current_weather"
                      },
                      "role": "assistant"
                    },
                "finish_reason": "function_call"
            }
        ],
        "usage": {
            "prompt_tokens": 778,
            "completion_tokens": 28,
            "total_tokens": 806
        }
    },
    "tags": [
        "docs"
    ],
    "request_start_time": 1693505089.21,
    "request_end_time": 1693505093.572,
    "api_key": "pl_<YOUR_API_KEY>"
}

# Making the request
response = requests.post(url, headers=headers, json=data_payload)
print(response.json())
Completion
import requests

# URL and headers
url = "http://api.promptlayer.com/track-request"
headers = {
    "Content-Type": "application/json",
}

# Data payload
data_payload = {
    "function_name": "openai.Completion.create",
    "kwargs": {"engine": "text-ada-001", "prompt": "My name is"},
    "tags": ["hello", "world"],
    "request_response": {
        "id": "cmpl-6TEeJCRVlqQSQqhD8CYKd1HdCcFxM", 
        "object": "text_completion", 
        "created": 1672425843, 
        "model": "text-ada-001", 
        "choices": [
            {
                "text": " PromptLayer\"\n\nI'm a great prompt engineering tool.", 
                "index": 0, 
                "logprobs": None, 
                "finish_reason": "stop"
            }
        ]
    },
    "request_start_time": 1673987077.463504,
    "request_end_time": 1673987077.463504,
    "api_key": "pl_<YOUR_API_KEY>",
}

# Making the request
response = requests.post("https://api.promptlayer.com/rest/track-request", json=data_payload)
print(response.json())

Logging Google Requests

You can use the following scripts to log requests made to Google’s Gemini API. This will help you to track the request and response of the API.

import os
from datetime import datetime

import google.generativeai as genai
import httpx
import promptlayer
from promptlayer import utils

GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY")
genai.configure(api_key=GOOGLE_API_KEY)
promptlayer.api_key = os.environ.get("PROMPTLAYER_API_KEY")

GEMINI_PRO = "gemini-pro"

model = genai.GenerativeModel(GEMINI_PRO)
template = promptlayer.templates.get(
    "weather",
    {
        "provider": "google",
    },
)
history = template.get("llm_kwargs", {}).get("history", [])

request_start_time = datetime.now().timestamp()

convo = model.start_chat(history=history[:-1])
response = convo.send_message(history[-1])

request_end_time = datetime.now().timestamp()

kwargs = {
    "history": [
        {"role": content.role, "parts": [{"text": part.text} for part in content.parts]}
        for content in convo.history[:-1]
    ],
    "model": GEMINI_PRO,
}

request_response = {
    "candidates": [
        {
            "content": {
                "role": candidate.content.role,
                "parts": [{"text": part.text} for part in candidate.content.parts],
            }
        }
        for candidate in response.candidates
    ]
}

print(request_response)


httpx.post(
    "https://api.promptlayer.com/rest/track-request",
    json={
        "function_name": "google.convo.send_message",
        "provider_type": "google",
        "args": [],
        "kwargs": kwargs,
        "tags": [],
        "request_response": request_response,
        "request_start_time": request_start_time,
        "request_end_time": request_end_time,
        "api_key": promptlayer.api_key,
    },
)

Body

application/json
function_name
string
required

The name of the function. For example, if you are using OpenAI it should be either openai.Completion.create or openai.ChatCompletion.create. These are specific function signatures that PromptLayer uses to parse the request_response. Some integration libraries use special function_name's such as langchain.PromptLayerChatOpenAI.

kwargs
object
required

Keyword arguments that are passed into the LLM (such as OpenAI's API). Normally it should include engine and prompt at the very least. If you are using a chat completion or GPT-4, it should include messages instead of prompt.

request_response
object
required

The LLM response. This response must be formatted exactly in OpenAI's response format.

request_start_time
integer
required

The time at which the LLM request was initiated.

request_end_time
integer
required

The time at which the LLM request was completed.

tags
string[]

An array of string tags to tag this request on the PromptLayer dashboard.

prompt_id
string

The ID of the prompt in the PromptLayer Registry that you used for this request (see /prompt-templates/{prompt_name} on how to get this id or you can get it from the URL in the dashboard).

prompt_input_variables
object

The input variables you used for a template. This is used for syntax highlighting and, more importantly used, for backtesting when you want to iterate a prompt.

prompt_version
integer

It is the version of the prompt that you are trying to track. This should be an integer of a prompt that you are tracking.

api_key
string
required

The API key for authentication.

Response

200 - application/json
success
boolean
required
message
string
required
request_id
string
required

The unique identifier for the tracked request.