可用性保障
💡
Litefuse API 的可用性很高,并且 prompt 会在 SDK 中本地缓存,避免网络问题影响你的应用。
不过,get_prompt()/getPrompt() 在以下情况下会抛出异常:
- 本地(无论是新鲜的还是陈旧的)都没有缓存的 prompt -> 新的应用实例首次拉取 prompt
- 并且 网络请求失败 -> 出现网络问题或 Litefuse API 故障(重试之后仍然失败)
要保证 100% 可用性,有两种方案:
- 在应用启动时预取 prompt,如果不可用就退出应用。
- 提供一个
fallbackprompt,在上述情况下使用。
方案 1:预取 prompt
在应用启动时预取 prompt,如果不可用就退出应用。
from flask import Flask, jsonify
from langfuse import Langfuse
# Initialize the Flask app and Langfuse client
app = Flask(__name__)
langfuse = Langfuse()
def fetch_prompts_on_startup():
try:
# Fetch and cache the production version of the prompt
langfuse.get_prompt("movie-critic")
except Exception as e:
print(f"Failed to fetch prompt on startup: {e}")
sys.exit(1) # Exit the application if the prompt is not available
# Call the function during application startup
fetch_prompts_on_startup()
@app.route('/get-movie-prompt/<movie>', methods=['GET'])
def get_movie_prompt(movie):
prompt = langfuse.get_prompt("movie-critic")
compiled_prompt = prompt.compile(criticlevel="expert", movie=movie)
return jsonify({"prompt": compiled_prompt})
if __name__ == '__main__':
app.run(debug=True)方案 2:Fallback
提供一个 fallback prompt,在上述情况下使用:
from langfuse import Langfuse
langfuse = Langfuse()
# Get `text` prompt with fallback
prompt = langfuse.get_prompt(
"movie-critic",
fallback="Do you like {{movie}}?"
)
# Get `chat` prompt with fallback
chat_prompt = langfuse.get_prompt(
"movie-critic-chat",
type="chat",
fallback=[{"role": "system", "content": "You are an expert on {{movie}}"}]
)
# True if the prompt is a fallback
prompt.is_fallback这个页面对你有帮助吗?