in movie_search/final_ver/backend/scene_search.py [0:0]
def generate_text(prompt: str, model: GenerativeModel = model_pro, temperature: float = 0.4, top_p: float = 0.4) -> dict:
"""Gemini でテキストを生成する
Args:
prompt: 入力プロンプト
model: 利用する Gemini モデル
temperature: 生成テキストのランダム性
top_p: 生成テキストの多様性
Returns:
生成された JSON オブジェクト
"""
response_schema = {
"type": "array",
"items": {
"type": "object",
"properties": {
"Timestamp": {
"type": "string",
},
"Description": {
"type": "string",
},
},
"required": ["Timestamp", "Description"],
},
}
responses = model.generate_content(
prompt,
generation_config=GenerationConfig(
max_output_tokens=8192,
temperature=temperature,
top_p=top_p,
response_mime_type="application/json",
response_schema=response_schema
),
safety_settings={
generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
},
# stream=True は不要になりました
)
# 最初のレスポンスのみを取得
result = responses.text
# JSON 文字列をパースして返す
return json.loads(result)