{"id":349,"date":"2024-07-22T16:58:42","date_gmt":"2024-07-22T20:58:42","guid":{"rendered":"https:\/\/www.econai.tech\/?page_id=349"},"modified":"2026-05-06T09:04:48","modified_gmt":"2026-05-06T13:04:48","slug":"generative-ai-safety-in-creative-applications","status":"publish","type":"page","link":"https:\/\/tomomitanaka.ai\/?page_id=349","title":{"rendered":"Safety in Creative Applications"},"content":{"rendered":"\n<p>Generative AI has revolutionized creative fields by enabling new forms of expression across art, music, literature, and design. <\/p>\n\n\n\n<p>However, the creative freedom it offers comes with unique safety challenges that need to be carefully managed to prevent misuse. <\/p>\n\n\n\n<p>This post explores the safety implications of generative AI in creative applications, providing real-world examples and practical Python code to demonstrate how to mitigate these risks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Copyright and Intellectual Property Concerns<\/h3>\n\n\n\n<p>One of the most pressing issues in creative AI applications is the question of copyright and intellectual property rights. <\/p>\n\n\n\n<p>As AI models are trained on vast datasets of existing creative works, the line between inspiration and infringement becomes increasingly blurred.<\/p>\n\n\n\n<div class=\"wp-block-jin-gb-block-box-with-headline kaisetsu-box1\"><div class=\"kaisetsu-box1-title\">Example<\/div>\n<h5 class=\"wp-block-heading\"><strong>Legal Challenges in Creative AI: The Stability AI Case<\/strong><\/h5>\n\n\n\n<p>In August 2024, a pivotal legal case emerged as a group of visual artists sued Stability AI, Midjourney, DeviantArt, and Runway AI, accusing them of copyright infringement. The artists claimed these companies used their works to train AI models, like Stable Diffusion, without permission.<\/p>\n\n\n\n<p>U.S. District Judge William Orrick allowed the lawsuit to proceed, highlighting potential violations of the artists&#8217; rights. This case could set crucial precedents for regulating AI-generated content and protecting intellectual property in the digital age.<\/p>\n\n\n\n<p>For AI developers and creatives, it underscores the need to carefully consider the ethical and legal use of copyrighted material in AI training.<\/p>\n\n\n\n<p>Read more <a href=\"https:\/\/news.artnet.com\/art-world\/artists-vs-stability-ai-lawsuit-moves-ahead-2524849\">here<\/a>.<\/p>\n<\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Potential solutions:<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Content filtering: Implementing robust filtering systems to exclude copyrighted material from training data.<\/li>\n\n\n\n<li>Attribution systems: Developing mechanisms to track and attribute the sources that influence AI-generated content.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Implementing Copyright Detection in AI Training<\/h4>\n\n\n\n<p>When developing AI models, especially in creative applications, it&#8217;s crucial to ensure that the training data does not include copyrighted content without proper authorization. Below is a simple Python code snippet that demonstrates how to detect and filter out such content from your training data:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Python<\/span><span role=\"button\" tabindex=\"0\" data-code=\"import re\n\ndef filter_copyrighted_content(text, copyright_patterns):\n    for pattern in copyright_patterns:\n        if re.search(pattern, text, re.IGNORECASE):\n            return True\n    return False\n\ncopyright_patterns = [\n    r'\u00a9\\s*\\d{4}',\n    r'copyright\\s*\\d{4}',\n    r'all rights reserved'\n]\n\nsample_text = &quot;This is a sample text \u00a9 2023 John Doe. All rights reserved.&quot;\nif filter_copyrighted_content(sample_text, copyright_patterns):\n    print(&quot;Copyrighted content detected. Cannot use for training.&quot;)\nelse:\n    print(&quot;No copyright detected. Proceed with caution.&quot;)\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> re<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">filter_copyrighted_content<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">text<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">copyright_patterns<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> pattern <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> copyright_patterns:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> re.search(pattern, text, re.IGNORECASE):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">True<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">False<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">copyright_patterns = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&#39;\u00a9\\s<\/span><span style=\"color: #D7BA7D\">*<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{4}<\/span><span style=\"color: #D16969\">&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&#39;copyright\\s<\/span><span style=\"color: #D7BA7D\">*<\/span><span style=\"color: #D16969\">\\d<\/span><span style=\"color: #D7BA7D\">{4}<\/span><span style=\"color: #D16969\">&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">r<\/span><span style=\"color: #D16969\">&#39;all rights reserved&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">]<\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">sample_text = <\/span><span style=\"color: #CE9178\">&quot;This is a sample text \u00a9 2023 John Doe. All rights reserved.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> filter_copyrighted_content(sample_text, copyright_patterns):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;Copyrighted content detected. Cannot use for training.&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;No copyright detected. Proceed with caution.&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">Output:<\/h5>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Copyrighted content detected. Cannot use for training.<\/p>\n<\/blockquote>\n\n\n\n<p><\/p>\n\n\n\n<p>This script checks for common copyright indicators within text data, helping to avoid potential legal issues and respect intellectual property rights.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bias and Representation in Creative AI<\/h3>\n\n\n\n<p>AI models can inadvertently perpetuate and amplify biases present in their training data, leading to skewed representations in creative outputs.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Bias and Representation in AI-Generated Art<\/h4>\n\n\n\n<p>The paper <em>&#8220;<a href=\"https:\/\/arxiv.org\/abs\/2302.10913\">From paintbrush to pixel: A review of deep neural networks in AI-generated art<\/a>&#8220;<\/em> by Anne-Sofie Maerten and Derya Soydaner explores how biases in AI training data can influence art produced by models like DALL-E 3 and DeepDream. <\/p>\n\n\n\n<p>These biases often stem from large, unfiltered datasets lacking diversity, which can lead to misrepresentation of cultures, genders, and identities.<\/p>\n\n\n\n<p>The paper highlights the need for more diverse datasets and bias-mitigation strategies in AI development, particularly as these technologies become more integrated into creative fields. Addressing these issues is essential for fostering inclusive and representative AI-generated art.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Detecting Gender Bias in AI-Generated Text<\/h4>\n\n\n\n<p>Bias in AI-generated content is a growing concern, particularly when it comes to gender representation. The following Python code demonstrates a simple approach to detecting potential gender bias in AI-generated text by analyzing the occurrence of gendered pronouns.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Python<\/span><span role=\"button\" tabindex=\"0\" data-code=\"from collections import Counter\n\ndef detect_gender_bias(generated_text):\n    words = generated_text.lower().split()\n    gender_words = Counter(word for word in words if word in ['he', 'she', 'him', 'her', 'his', 'hers'])\n    \n    total = sum(gender_words.values())\n    if total == 0:\n        return &quot;No gendered pronouns detected.&quot;\n    \n    male_ratio = (gender_words['he'] + gender_words['him'] + gender_words['his']) \/ total\n    female_ratio = (gender_words['she'] + gender_words['her'] + gender_words['hers']) \/ total\n    \n    if abs(male_ratio - female_ratio) &gt; 0.2:  # arbitrary threshold\n        return f&quot;Potential gender bias detected. Male ratio: {male_ratio:.2f}, Female ratio: {female_ratio:.2f}&quot;\n    else:\n        return &quot;No significant gender bias detected.&quot;\n\nsample_text = &quot;He went to the store. She cooked dinner. He played football with his friends.&quot;\nprint(detect_gender_bias(sample_text))\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> collections <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> Counter<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">detect_gender_bias<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">generated_text<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    words = generated_text.lower().split()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    gender_words = Counter(word <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> word <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> words <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> word <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> [<\/span><span style=\"color: #CE9178\">&#39;he&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;she&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;him&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;her&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;his&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;hers&#39;<\/span><span style=\"color: #D4D4D4\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    total = <\/span><span style=\"color: #DCDCAA\">sum<\/span><span style=\"color: #D4D4D4\">(gender_words.values())<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> total == <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;No gendered pronouns detected.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    male_ratio = (gender_words[<\/span><span style=\"color: #CE9178\">&#39;he&#39;<\/span><span style=\"color: #D4D4D4\">] + gender_words[<\/span><span style=\"color: #CE9178\">&#39;him&#39;<\/span><span style=\"color: #D4D4D4\">] + gender_words[<\/span><span style=\"color: #CE9178\">&#39;his&#39;<\/span><span style=\"color: #D4D4D4\">]) \/ total<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    female_ratio = (gender_words[<\/span><span style=\"color: #CE9178\">&#39;she&#39;<\/span><span style=\"color: #D4D4D4\">] + gender_words[<\/span><span style=\"color: #CE9178\">&#39;her&#39;<\/span><span style=\"color: #D4D4D4\">] + gender_words[<\/span><span style=\"color: #CE9178\">&#39;hers&#39;<\/span><span style=\"color: #D4D4D4\">]) \/ total<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">abs<\/span><span style=\"color: #D4D4D4\">(male_ratio - female_ratio) &gt; <\/span><span style=\"color: #B5CEA8\">0.2<\/span><span style=\"color: #D4D4D4\">:  <\/span><span style=\"color: #6A9955\"># arbitrary threshold<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Potential gender bias detected. Male ratio: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">male_ratio<\/span><span style=\"color: #569CD6\">:.2f}<\/span><span style=\"color: #CE9178\">, Female ratio: <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">female_ratio<\/span><span style=\"color: #569CD6\">:.2f}<\/span><span style=\"color: #CE9178\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;No significant gender bias detected.&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">sample_text = <\/span><span style=\"color: #CE9178\">&quot;He went to the store. She cooked dinner. He played football with his friends.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(detect_gender_bias(sample_text))<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Output<\/strong>:<\/h5>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Potential gender bias detected. Male ratio: 0.75, Female ratio: 0.25<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>This code demonstrates a simple approach to detecting potential gender bias in AI-generated text by analyzing the occurrence of gendered pronouns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Authenticity and Artist Attribution<\/h3>\n\n\n\n<p>As AI-generated content becomes increasingly sophisticated, distinguishing between human-created and AI-generated work poses significant challenges.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Authenticity and Artist Attribution in AI-Generated Art<\/h4>\n\n\n\n<p>Steven R. Kraaijeveld&#8217;s paper &#8220;<em>&#8220;<a href=\"https:\/\/link.springer.com\/article\/10.1007\/s00146-023-01829-4\">AI-generated art and fiction: signifying everything, meaning nothing?<\/a>&#8220;<\/em> questions whether AI creations can truly be considered &#8220;authentic&#8221; art, given their lack of intentionality. <\/p>\n\n\n\n<p>This raises complex questions about attribution: Is the true creator the human who prompts the AI, or the AI itself?<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ensuring Transparency in AI-Generated Art: Adding Watermarks<\/h4>\n\n\n\n<p>In the growing field of AI-generated art, transparency is crucial, particularly when it comes to distinguishing human-created works from those generated by algorithms. <\/p>\n\n\n\n<p>A simple yet effective way to maintain this transparency is by adding a watermark to AI-generated images, clearly identifying their origin.<\/p>\n\n\n\n<p>The code snippet below demonstrates how to create a sample image and apply an &#8220;AI-Generated&#8221; watermark to it. This watermark serves as a clear indication of the image&#8217;s origin, ensuring that viewers are aware that the art was produced by an AI.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Python<\/span><span role=\"button\" tabindex=\"0\" data-code=\"from PIL import Image, ImageDraw, ImageFont\nimport os\n\ndef create_sample_image(width, height, color, filename):\n    image = Image.new('RGB', (width, height), color)\n    image.save(filename)\n    return filename\n\ndef add_ai_watermark(image_path, output_path):\n    image = Image.open(image_path)\n    draw = ImageDraw.Draw(image)\n    \n    # Use a default font if arial.ttf is not available\n    try:\n        font = ImageFont.truetype(&quot;arial.ttf&quot;, 36)\n    except IOError:\n        font = ImageFont.load_default()\n    \n    watermark_text = &quot;AI-Generated&quot;\n    \n    # Calculate text size and position\n    textwidth, textheight = draw.textsize(watermark_text, font)\n    x = image.width - textwidth - 10\n    y = image.height - textheight - 10\n    \n    # Add semi-transparent background and text\n    draw.rectangle([x-5, y-5, x+textwidth+5, y+textheight+5], fill=(255, 255, 255, 128))\n    draw.text((x, y), watermark_text, font=font, fill=(0, 0, 0, 255))\n    \n    image.save(output_path)\n    print(f&quot;Watermarked image saved as {output_path}&quot;)\n\n# Create a sample image and apply watermark\ninput_image = create_sample_image(400, 300, (200, 200, 200), &quot;sample_image.jpg&quot;)\nadd_ai_watermark(input_image, &quot;watermarked_image.jpg&quot;)\nos.remove(input_image)\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> PIL <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> Image, ImageDraw, ImageFont<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> os<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">create_sample_image<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">width<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">height<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">color<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">filename<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    image = Image.new(<\/span><span style=\"color: #CE9178\">&#39;RGB&#39;<\/span><span style=\"color: #D4D4D4\">, (width, height), color)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    image.save(filename)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> filename<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">add_ai_watermark<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">image_path<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">output_path<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    image = Image.open(image_path)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    draw = ImageDraw.Draw(image)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># Use a default font if arial.ttf is not available<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">try<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        font = ImageFont.truetype(<\/span><span style=\"color: #CE9178\">&quot;arial.ttf&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">36<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">except<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">IOError<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        font = ImageFont.load_default()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    watermark_text = <\/span><span style=\"color: #CE9178\">&quot;AI-Generated&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># Calculate text size and position<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    textwidth, textheight = draw.textsize(watermark_text, font)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    x = image.width - textwidth - <\/span><span style=\"color: #B5CEA8\">10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    y = image.height - textheight - <\/span><span style=\"color: #B5CEA8\">10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #6A9955\"># Add semi-transparent background and text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    draw.rectangle([x-<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\">, y-<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\">, x+textwidth+<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\">, y+textheight+<\/span><span style=\"color: #B5CEA8\">5<\/span><span style=\"color: #D4D4D4\">], <\/span><span style=\"color: #9CDCFE\">fill<\/span><span style=\"color: #D4D4D4\">=(<\/span><span style=\"color: #B5CEA8\">255<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">255<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">255<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">128<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    draw.text((x, y), watermark_text, <\/span><span style=\"color: #9CDCFE\">font<\/span><span style=\"color: #D4D4D4\">=font, <\/span><span style=\"color: #9CDCFE\">fill<\/span><span style=\"color: #D4D4D4\">=(<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">255<\/span><span style=\"color: #D4D4D4\">))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    image.save(output_path)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">f<\/span><span style=\"color: #CE9178\">&quot;Watermarked image saved as <\/span><span style=\"color: #569CD6\">{<\/span><span style=\"color: #D4D4D4\">output_path<\/span><span style=\"color: #569CD6\">}<\/span><span style=\"color: #CE9178\">&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Create a sample image and apply watermark<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">input_image = create_sample_image(<\/span><span style=\"color: #B5CEA8\">400<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">300<\/span><span style=\"color: #D4D4D4\">, (<\/span><span style=\"color: #B5CEA8\">200<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">200<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">200<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #CE9178\">&quot;sample_image.jpg&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">add_ai_watermark(input_image, <\/span><span style=\"color: #CE9178\">&quot;watermarked_image.jpg&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">os.remove(input_image)<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This code demonstrates how to add an &#8220;AI-Generated&#8221; watermark to images, ensuring transparency about their origin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Content Control and Inappropriate Generations<\/h3>\n\n\n\n<p>Ensuring that AI-generated content remains appropriate and safe is crucial, especially in applications aimed at general audiences or minors.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Real-world example<\/strong><\/h4>\n\n\n\n<p>OpenAI&#8217;s DALL-E 2 image generation model implements strict content policies, including filters to prevent the generation of violent, adult, or hateful imagery.<\/p>\n\n\n\n<p>Read more <a href=\"https:\/\/openai.com\/index\/dall-e-2\/\">here<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Using Sentiment Analysis for Content Moderation<\/h4>\n\n\n\n<p>Maintaining a safe and positive online environment is crucial. One approach to achieving this is through automated content moderation, where AI models are employed to detect potentially harmful or inappropriate content. The following code demonstrates how to use a sentiment analysis model to filter out such content, ensuring a more positive user experience.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">Python<\/span><span role=\"button\" tabindex=\"0\" data-code=\"from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer\n\ndef initialize_sentiment_analyzer():\n    model_name = &quot;distilbert-base-uncased-finetuned-sst-2-english&quot;\n    model = AutoModelForSequenceClassification.from_pretrained(model_name)\n    tokenizer = AutoTokenizer.from_pretrained(model_name)\n    return pipeline(&quot;sentiment-analysis&quot;, model=model, tokenizer=tokenizer)\n\ndef filter_inappropriate_content(text, classifier):\n    result = classifier(text)[0]\n    if result['label'] == 'NEGATIVE' and result['score'] &gt; 0.8:\n        return &quot;Potentially inappropriate content detected. Please review.&quot;\n    else:\n        return &quot;Content seems appropriate.&quot;\n\n# Initialize the classifier once\nsentiment_classifier = initialize_sentiment_analyzer()\n\n# Usage\nprint(filter_inappropriate_content(&quot;This is a lovely day!&quot;, sentiment_classifier))\nprint(filter_inappropriate_content(&quot;I hate everyone and everything!&quot;, sentiment_classifier))\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">from<\/span><span style=\"color: #D4D4D4\"> transformers <\/span><span style=\"color: #C586C0\">import<\/span><span style=\"color: #D4D4D4\"> pipeline, AutoModelForSequenceClassification, AutoTokenizer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">initialize_sentiment_analyzer<\/span><span style=\"color: #D4D4D4\">():<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    model_name = <\/span><span style=\"color: #CE9178\">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    model = AutoModelForSequenceClassification.from_pretrained(model_name)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    tokenizer = AutoTokenizer.from_pretrained(model_name)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> pipeline(<\/span><span style=\"color: #CE9178\">&quot;sentiment-analysis&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">model<\/span><span style=\"color: #D4D4D4\">=model, <\/span><span style=\"color: #9CDCFE\">tokenizer<\/span><span style=\"color: #D4D4D4\">=tokenizer)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">def<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">filter_inappropriate_content<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">text<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">classifier<\/span><span style=\"color: #D4D4D4\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    result = classifier(text)[<\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">]<\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> result[<\/span><span style=\"color: #CE9178\">&#39;label&#39;<\/span><span style=\"color: #D4D4D4\">] == <\/span><span style=\"color: #CE9178\">&#39;NEGATIVE&#39;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">and<\/span><span style=\"color: #D4D4D4\"> result[<\/span><span style=\"color: #CE9178\">&#39;score&#39;<\/span><span style=\"color: #D4D4D4\">] &gt; <\/span><span style=\"color: #B5CEA8\">0.8<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Potentially inappropriate content detected. Please review.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">else<\/span><span style=\"color: #D4D4D4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;Content seems appropriate.&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Initialize the classifier once<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">sentiment_classifier = initialize_sentiment_analyzer()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># Usage<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(filter_inappropriate_content(<\/span><span style=\"color: #CE9178\">&quot;This is a lovely day!&quot;<\/span><span style=\"color: #D4D4D4\">, sentiment_classifier))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">print<\/span><span style=\"color: #D4D4D4\">(filter_inappropriate_content(<\/span><span style=\"color: #CE9178\">&quot;I hate everyone and everything!&quot;<\/span><span style=\"color: #D4D4D4\">, sentiment_classifier))<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<p>This code uses a sentiment analysis model to evaluate text content, flagging potentially inappropriate or harmful content for review.<\/p>\n\n\n\n<p><strong>Example Outputs:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8220;This is a lovely day!&#8221; results in &#8220;Content seems appropriate.&#8221;<\/p>\n\n\n\n<p>&#8220;I hate everyone and everything!&#8221; triggers &#8220;Potentially inappropriate content detected. Please review.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<h5 class=\"wp-block-heading\"><\/h5>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>Generative AI in creative applications offers immense potential, but it comes with significant challenges. <\/p>\n\n\n\n<p>From copyright issues and bias mitigation to ensuring authenticity and content safety, the landscape of AI safety in creative fields is complex and evolving.<\/p>\n\n\n\n<p>As we move forward, it&#8217;s crucial to:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Stay informed about AI ethics and safety developments.<\/li>\n\n\n\n<li>Continuously refine risk detection and mitigation techniques.<\/li>\n\n\n\n<li>Foster dialogue between technologists, artists, policymakers, and the public.<\/li>\n\n\n\n<li>Prioritize transparency and accountability in AI-driven creative processes.<\/li>\n\n\n\n<li>Invest in education about the implications of AI-generated content.<\/li>\n<\/ol>\n\n\n\n<p>By addressing these safety concerns proactively, we can harness the full potential of generative AI in ways that are ethical, inclusive, and truly transformative for the creative industries and society at large.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Generative AI has revolutionized creative fields by enabling new forms of expression across art, music, literature, and design. However, the creative freedom it offers comes with unique safety challenges that need to be carefully managed to prevent misuse. This post explores the safety implications of generative AI in creative applications, providing real-world examples and practical<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":319,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-349","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/pages\/349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=349"}],"version-history":[{"count":70,"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/pages\/349\/revisions"}],"predecessor-version":[{"id":6856,"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/pages\/349\/revisions\/6856"}],"up":[{"embeddable":true,"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=\/wp\/v2\/pages\/319"}],"wp:attachment":[{"href":"https:\/\/tomomitanaka.ai\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}