自訂提示管理
使用自訂掛鉤將 LiteLLM 連接至您的提示管理系統。
總覽
運作方式
快速開始
1. 建立您的自訂提示管理器
建立一個繼承自 CustomPromptManagement 的類別,以處理提示擷取與格式化:
範例實作
建立一個名為 custom_prompt.py 的新檔案並加入這段程式碼。這裡的關鍵方法是 get_chat_completion_prompt,您可以實作自訂邏輯,根據 prompt_id 和 prompt_variables 擷取並格式化提示。
from typing import List, Tuple, Optional
from litellm.integrations.custom_prompt_management import CustomPromptManagement
from litellm.types.llms.openai import AllMessageValues
from litellm.types.utils import StandardCallbackDynamicParams
class MyCustomPromptManagement(CustomPromptManagement):
def get_chat_completion_prompt(
self,
model: str,
messages: List[AllMessageValues],
non_default_params: dict,
prompt_id: str,
prompt_variables: Optional[dict],
dynamic_callback_params: StandardCallbackDynamicParams,
) -> Tuple[str, List[AllMessageValues], dict]:
"""
Retrieve and format prompts based on prompt_id.
Returns:
- model: The model to use
- messages: The formatted messages
- non_default_params: Optional parameters like temperature
"""
# Example matching the diagram: Add system message for prompt_id "1234"
if prompt_id == "1234":
# Prepend system message while preserving existing messages
new_messages = [
{"role": "system", "content": "Be a good Bot!"},
] + messages
return model, new_messages, non_default_params
# Default: Return original messages if no prompt_id match
return model, messages, non_default_params
prompt_management = MyCustomPromptManagement()
2. 在 LiteLLM 中設定您的提示管理器 config.yaml
model_list:
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
callbacks: custom_prompt.prompt_management # sets litellm.callbacks = [prompt_management]
3. 啟動 LiteLLM 閘道
- Docker 執行
- litellm pip
將您的 custom_logger.py 掛載到 LiteLLM Docker 容器中。
docker run -d \
-p 4000:4000 \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
--name my-app \
-v $(pwd)/my_config.yaml:/app/config.yaml \
-v $(pwd)/custom_logger.py:/app/custom_logger.py \
my-app:latest \
--config /app/config.yaml \
--port 4000 \
--detailed_debug \
litellm --config config.yaml --detailed_debug
4. 測試您的自訂提示管理器
當您傳入 prompt_id="1234" 時,自訂提示管理器會在您的對話中加入一則系統訊息 "Be a good Bot!":
- OpenAI Python v1.0.0+
- Langchain
- Curl
from openai import OpenAI
client = OpenAI(
api_key="sk-1234",
base_url="http://0.0.0.0:4000"
)
response = client.chat.completions.create(
model="gemini-1.5-pro",
messages=[{"role": "user", "content": "hi"}],
extra_body={
"prompt_id": "1234"
}
)
print(response.choices[0].message.content)
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
chat = ChatOpenAI(
model="gpt-4",
openai_api_key="sk-1234",
openai_api_base="http://0.0.0.0:4000",
extra_body={
"prompt_id": "1234"
}
)
messages = []
response = chat(messages)
print(response.content)
curl -X POST http://0.0.0.0:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gemini-1.5-pro",
"messages": [{"role": "user", "content": "hi"}],
"prompt_id": "1234"
}'
直接使用 LiteLLM SDK
如果您從 Python 腳本中呼叫 litellm.completion()(而不透過 proxy),請先註冊您的自訂提示管理器,再送出請求:
import litellm
from custom_prompt import prompt_management
litellm.callbacks = [prompt_management]
litellm.use_litellm_proxy = True
response = litellm.completion(
model="gpt-4",
messages=[{"role": "user", "content": "hi"}],
prompt_id="1234",
prompt_variables={"user_message": "hi"},
)
注意: SDK 腳本中需要
litellm.callbacks = [prompt_management](或等效的litellm.logging_callback_manager.add_litellm_callback(prompt_management))。proxy 會自動從config.yaml讀取callbacks,但獨立腳本不會。
請求將從以下內容轉換為:
{
"model": "gemini-1.5-pro",
"messages": [{"role": "user", "content": "hi"}],
"prompt_id": "1234"
}
變為:
{
"model": "gemini-1.5-pro",
"messages": [
{"role": "system", "content": "Be a good Bot!"},
{"role": "user", "content": "hi"}
]
}