12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import os
- from volcenginesdkarkruntime import Ark
- from .read_folder import read_jsons_in_order
- client = Ark(
- base_url="https://ark.cn-beijing.volces.com/api/v3",
- api_key="817dff39-5586-4f9b-acba-55004167c0b1",
- )
- system_prompt = """
- ## 角色:你是一个优秀的文本理解与解析专家,同时你也是一个优秀的视频剪辑创作者。
- ## 任务:请对输入的视频脚本进行深入理解与解析,将视频脚本按照人物服装进行拆分,当人物服装在颜色、款式上有较大的变动,才判定为更换了衣服。
- ## 背景:我需要将一个长视频按照视频人物所穿衣服来裁切成多个视频片段,要求裁切后的视频片段中主要人物衣服没有更换。当人物服装在颜色、款式上有较大的变动,才判定为更换了衣服。
- ## 输出格式:
- ```json
- {
- "裁切位置": //<例如:frame_07-frame_08,代表在视频片段编号frame_07和视频片段编号frame_08之间裁切,如果有多个裁切位置,请以列表形式输出>
- }
- ## 注意事项:
- - 长视频中的人物是按照时间顺序进行衣服更换的,因此不可能出现01片段和03片段穿同一件衣服,而02片段穿不同的衣服。
- - 视频片段编号格式为:frame_00000600,代表这是视频片段的第600秒。
- - 一个长视频通常有2到3个裁切位置,一定不可能超过3个裁切位置。
- """
- def get_answer(user_prompt):
- completion = client.chat.completions.create(
- model="deepseek-v3-241226",
- messages=[
- {"role": "system", "content": system_prompt},
- {"role": "user", "content": user_prompt},
- ],
- )
- return completion.choices[0].message.content
- def text_classifer(user_prompt):
- system_prompt = """
- ## 任务:判断输入的文本是否在讲解衣服特性、属性
- ## 背景知识:
- ---
- **正例:**
- - 这是假两件的款式
- - 我采用的来自澳大利亚进口的美丽诺羊毛是羊毛中的天花板
- - 采用立体裁切,A字版型
- - 100%新疆长绒棉,亲肤透气,久穿不易起球变形。
- - 高腰A字裙版型,腰线提升视觉比例,下摆微蓬显腿细。
- - 超短上衣+低腰裤组合,五五分身材慎选,易显腿短
- ---
- **反例:** 没有说明衣服属性、特性的具体内容。
- - 看看喜欢的款式。
- - 你可以去搜去问去找羊毛,
- - 对我们来说工艺更难,
- - 顶梁柱面料。
- - 利亚在冬天的招牌面料自然不可能便宜。
- - 今天水洗绵羊毛的这条背心裙以后来一千五只有一条。
- ---
- ## 输出格式:{"讲解衣服": //<文本是否在讲解衣服特性、属性,取值范围:是、否>}
- ## 要求:必须以JSON格式输出提取的结果
- ## 注意事项:
- - 如果是讲衣服便宜实惠,则输出:{"讲解衣服": "否"}
- - 如果没有讲解出衣服属性、特性的实质内容,则输出:{"讲解衣服": "否"}
- """
- completion = client.chat.completions.create(
- messages = [
- {"role": "system", "content": system_prompt},
- {"role": "user", "content": user_prompt},
- ],
- model="ep-20241018084532-cgm84", # ep-20241018084532-cgm84 deepseek-v3-241226
- temperature = 0.01,
- max_tokens = 200
- )
- return completion.choices[0].message.content
- if __name__ == "__main__":
- file_path = "/data/data/luosy/project/oral/data/img_caption/"
- sorted_files = read_jsons_in_order(file_path)
- clips_content = []
- for filename, content in sorted_files:
- clip_content = str(content)
- clips_content.append(clip_content)
- user_prompt = "\n".join(clips_content)
-
- answer = get_answer(user_prompt)
- print(answer)
|