import gradio as gr def resume_builder( roles, experiences, skills, other_skills, years, location, education, language_level, desired_salary, employment_type, achievements, ): template = f"""【職務経歴書】 【基本情報】 職種: {", ".join(roles)} 経験年数: {years}年 希望勤務地: {location} 最終学歴: {education} 希望年収: {desired_salary} 希望雇用形態: {", ".join(employment_type)} 語学レベル: {language_level} 【職務経歴】 経験業務: {", ".join(experiences)} 【スキル】 技術スキル: {", ".join(skills)} その他スキル: {other_skills} 【主な成果】 {achievements} """ return template demo = gr.Interface( fn=resume_builder, inputs=[ gr.CheckboxGroup( [ "フロントエンドエンジニア", "バックエンドエンジニア", "インフラエンジニア", ], label="職種", info="経験職種を選択して下さい", ), gr.CheckboxGroup( ["Web開発", "AIプロダクト", "モバイルアプリ開発"], label="経験業務", info="経験業務を選択して下さい", ), gr.CheckboxGroup( ["Python", "JavaScript", "SQL"], label="スキル", info="使えるスキルを選択して下さい", ), gr.Textbox( lines=2, label="その他スキル", info="その他のスキルを入力して下さい" ), gr.Slider(2, 20, value=4, label="経験年数", info="経験年数を入力して下さい"), gr.Radio( ["東京", "大阪", "名古屋", "リモート"], label="希望勤務地", info="希望する勤務地を選択してください", ), gr.Dropdown( ["大学院卒", "大学卒", "高専卒", "専門学校卒", "その他"], label="最終学歴", info="最終学歴を選択してください", ), gr.Dropdown( ["ネイティブ", "ビジネスレベル", "日常会話レベル", "読み書きレベル"], label="英語レベル", info="英語レベルを選択してください", ), gr.Dropdown( [ "400万円以下", "400-500万円", "500-600万円", "600-700万円", "700-800万円", "800万円以上", ], label="希望年収", info="希望する年収範囲を選択してください", ), gr.Dropdown( ["正社員", "契約社員", "フリーランス", "パートタイム"], label="希望雇用形態", multiselect=True, info="希望する雇用形態を選択してください", ), gr.Textbox(lines=4, label="主な成果", info="過去の主な成果を入力して下さい"), ], outputs=gr.Textbox( lines=20, label="職務経歴書", info="テンプレートを自由に編集できます", interactive=True, ), examples=[ [ ["フロントエンドエンジニア"], ["Web開発"], ["JavaScript"], "React, Vue.js", 5, "東京", "大学卒", "ビジネスレベル", "500-600万円", ["正社員"], "Webアプリケーションの開発リード経験あり", ], [ ["バックエンドエンジニア"], ["AIプロダクト"], ["Python", "SQL"], "Django, Flask", 3, "リモート", "大学院卒", "日常会話レベル", "600-700万円", ["フリーランス"], "機械学習モデルの実装と運用", ], ], ) if __name__ == "__main__": demo.launch(share=True)