File size: 1,633 Bytes
2680bd5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import numpy as np
import json
from typing import List
from os.path import join as pjoin

from .feature.bihand_motioncode import BihandMotionCoder
from .llm.llm_helper import get_llm_response, insert_json_to_prompt, insert_action_and_ori_descri_to_prompt, parse_json_from_response


def generate_annotation(skeleton_motion: np.ndarray, prompt_template:str, model: str='deepseek-reasoner', return_json: bool=False) -> str:
    bihand_motioncoder = BihandMotionCoder(skeleton_motion)
    bihand_motioncoder.generate_motion_codes()
    feature_json = bihand_motioncoder.get_json()

    prompt = insert_json_to_prompt(feature_json, prompt_template)
    annotation = get_llm_response(
        prompt,
        model=model,
    )

    if return_json:
        return parse_json_from_response(annotation)
    else:
        return annotation

def rephrase_annotation(action_label:str, original_description:str, prompt_template:str, model: str='gemini-2.5-pro') -> List[str]:
    """
    Rephrase the original description based on the action label using a language model.

    :param action_label: The action label to be included in the prompt.
    :param original_description: The original description to be rephrased.
    :param prompt_template: The template for the prompt.
    :param model: The model to use for rephrasing.
    :return: A list of rephrased descriptions.
    """
    prompt = insert_action_and_ori_descri_to_prompt(action_label, original_description, prompt_template)
    response = get_llm_response(prompt, model)

    return list(parse_json_from_response(response).values())  # Assuming this function is defined elsewhere