Skip to content

Latest commit

 

History

History
481 lines (326 loc) · 34.4 KB

File metadata and controls

481 lines (326 loc) · 34.4 KB

ការសាងសង់កម្មវិធីបង្កើតរូបភាព

ការសាងសង់កម្មវិធីបង្កើតរូបភាព

មានច្រើនជាងការបង្កើតអត្ថបទសម្រាប់ LLMs។ វាក៏អាចបង្កើតរូបភាពពីការពណ៌នាអត្ថបទបានផងដែរ។ ការមានរូបភាពជារបៀបបង្ហាញអាចមានប្រយោជន៍ខ្លាំងនៅក្នុងវិស័យជាច្រើនចាប់ពីវិទ្យាសាស្ត្រសុខភាព វិស្វកម្ម សេវាកម្សាន្ត ការអភិវឌ្ឍហ្គេម និងផ្សេងទៀត។ នៅជំពូកនេះ យើងនឹងមើលទៅលីម៉ូដែលបង្កើតរូបភាពពេញនិយមពីរ គឺ DALL-E និង Midjourney។

បើកការណ៍

នៅក្នុងមេរៀននេះ យើងនឹងគ្របដណ្តប់៖

  • ការបង្កើតរូបភាព និងហេតុអ្វីបានជាវាមានប្រយោជន៍។
  • DALL-E និង Midjourney តើអ្វីខ្លះ និងវាធ្វើការយ៉ាងដូចម្តេច។
  • របៀបដែលអ្នកនឹងសាងសង់កម្មវិធីបង្កើតរូបភាព។

គោលបំណងការសិក្សា

បន្ទាប់ពីបញ្ចប់មេរៀននេះ អ្នកនឹងអាច៖

  • សាងសង់កម្មវិធីបង្កើតរូបភាព។
  • កំណត់ដែនកំណត់សម្រាប់កម្មវិធីរបស់អ្នកជាមួយបង្ហាញមេតា។
  • ប្រើប្រាស់ DALL-E និង Midjourney។

ហេតុអ្វីបានជារចនាកម្មវិធីបង្កើតរូបភាព?

កម្មវិធីបង្កើតរូបភាពគឺជារបៀបល្អសម្រាប់ងាកកម្រិតសមត្ថភាពរបស់ AI បង្កើត។ វាអាចប្រើសម្រាប់៖

  • កែប្រែ និងសម្ងាត់រូបភាព។ អ្នកអាចបង្កើតរូបភាពសម្រាប់ការប្រើប្រាស់ផ្សេងៗ ដូចជា កែប្រែរូបភាព និងសម្ងាត់រូបភាព។

  • អនុវត្តទៅវិស័យជាច្រើន។ វាក៏អាចប្រើសម្រាប់បង្កើតរូបភាពសម្រាប់វិស័យជាច្រើន ដូចជា វិទ្យាសាស្ត្រសុខភាព ការកម្សាន្ត ការអភិវឌ្ឍហ្គេម និងផ្សេងទៀត។

សេណារីយ៉ូ៖ Edu4All

ជាផ្នែកមួយនៃមេរៀននេះ យើងនឹងបន្តធ្វើការជាមួយការចាប់ផ្តើមរបស់យើង Edu4All ក្នុងមេរៀននេះ។ សិស្សានុស្សានឹងបង្កើតរូបភាពសម្រាប់ការបោះតង់បែបបទរបស់ពួកគេ តែរូបភាពអ្វីទេនឹងអាស្រ័យលើសិស្សា ប៉ុន្តែពួកគេអាចប្រើវាជារូបភាពផ្ដល់បែបបទរបស់ពួកគេចំណងជើងរឿងរបស់ខ្លួន ឬបង្កើតតួអង្គថ្មីសម្រាប់រឿង រឺជួយពួកគេច្រៀងយល់ពីគំនិត និងគំនិតរបស់ពួកគេ។

នេះជារូបភាពដែលសិស្ស Edu4All អាចបង្កើតបាន ប្រសិនបើពួកគេកំពុងធ្វើការជាមួយប្រធានបទអាគាររំលេច៖

Edu4All startup, class on monuments, Eiffel Tower

ដោយប្រើបង្ហាញមួយដូចជា

"ឆ្កែជិតប្រាសាទអ៊ីហ្វេឡ៍នៅពេលព្រឹក"

DALL-E និង Midjourney ជាអ្វីខ្លះ?

DALL-E និង Midjourney គឺជាលីម៉ូដែលបង្កើតរូបភាពពេញនិយមពីរ ដែលអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់បង្ហាញមេដើម្បីបង្កើតរូបភាព។

DALL-E

ចាប់ផ្តើមជាមួយ DALL-E ដែលជាលីម៉ូដែល AI បង្កើតដែលបង្កើតរូបភាពពីការពណ៌នាអត្ថបទ។

DALL-E គឺជាការរួមបញ្ចូលនៃលីម៉ូដែលពីរគឺ CLIP និង diffused attention

  • CLIP គឺជាលីម៉ូដែលបង្កើត embeddings ដែលជាតំណាងឌីជីថលនៃទិន្នន័យ ពីរូបភាព និងអត្ថបទ។

  • Diffused attention គឺជាលីម៉ូដែលបង្កើតរូបភាពពី embeddings។ DALL-E ត្រូវបានហ្វឹកហាត់លើទិន្នន័យរួមមានរូបភាព និងអត្ថបទ ហើយអាចប្រើសម្រាប់បង្កើតរូបភាពពីការពណ៌នាអត្ថបទ។ ឧទាហរណ៍ DALL-E អាចប្រើសម្រាប់បង្កើតរូបភាពឆ្មា​ស្លៀកមួក ឬឆ្កែមានកម្រាលសក់ mohawk។

Midjourney

Midjourney ធ្វើការជាយ៉ាងស្រដៀងទៅនឹង DALL-E វាបង្កើតរូបភាពពីបង្ហាញអត្ថបទ។ Midjourney ក៏អាចប្រើសម្រាប់បង្កើតរូបភាពដោយប្រើបង្ហាញដូចជា “ឆ្មា​ស្លៀកមួក” ឬ “ឆ្កែមានកម្រាល mohawk”។

រូបភាពបង្កើតដោយ Midjourney, ការសែតកាផ្លាស្ទិច ឯកសាររូបភាព Wikipedia, រូបភាពបង្កើតដោយ Midjourney

DALL-E និង Midjourney ធ្វើការយ៉ាងដូចម្តេច

ដំបូង ជាមួយ DALL-E។ DALL-E គឺជាលីម៉ូដែល AI បង្កើតដែលអាស្រ័យលើស្ថាបត្យកម្ម transformer ជាមួយ autoregressive transformer

autoregressive transformer កំណត់របៀបដែលលីម៉ូដែលបង្កើតរូបភាពពីការពណ៌នាអត្ថបទ វាបង្កើតពិចសែលមួយក្នុងមួយពេល ហើយប្រើពិចសែលដែលបានបង្កើតសម្រាប់បង្កើតពិចសែលបន្ទាប់។ វាបន្តផ្លាស់ប្តូរតាមជាន់ជាច្រើនក្នុងបណ្តាញបច្ចេកទេសស្រព្ធ បន្ទាប់មករូបភាពត្រូវបានបញ្ចប់។

ជាមួយដំណើរការនេះ DALL-E គ្រប់គ្រងលក្ខណៈពិសេស វត្ថុ លក្ខណៈ និងច្រើនទៀតក្នុងរូបភាពដែលវាបង្កើត។ ទោះជាយ៉ាងណា DALL-E 2 និង 3 មានការគ្រប់គ្រងច្រើនជាងលើរូបភាពដែលបានបង្កើត។

សាងសង់កម្មវិធីបង្កើតរូបភាពដំបូងរបស់អ្នក

តើត្រូវការអ្វីដើម្បីបង្កើតកម្មវិធីបង្កើតរូបភាព? អ្នកត្រូវការរ المكتبات ខាងក្រោម៖

  • python-dotenv អ្នកត្រូវបានណែនាំយ៉ាងខ្លាំងឱ្យប្រើបណ្ណាល័យនេះដើម្បីរក្សារសម្ងាត់របស់អ្នកនៅក្នុងឯកសារ .env បំបែកពីកូដ។
  • openai បណ្ណាល័យនេះគឺជាអ្វីដែលអ្នកនឹងប្រើសម្រាប់ទំនាក់ទំនងជាមួយ OpenAI API។
  • pillow សម្រាប់ធ្វើការ​ជាមួយរូបភាពក្នុង Python។
  • requests ជួយអ្នកធ្វើការអំពាវនាវ HTTP។

បង្កើត និងផ្សព្វផ្សាយម៉ូដែល Azure OpenAI

បើអ្នកមិនទាន់បានធ្វើទេ សូមអនុវត្តតាមការណែនាំនៅលើទំព័រ Microsoft Learn ដើម្បីបង្កើតធនធាន Azure OpenAI និងម៉ូដែល។ ជ្រើសរើស DALL-E 3 ជាម៉ូដែល។

បង្កើតកម្មវិធី

  1. បង្កើតឯកសារ .env ដែលមានខ្លឹមសារដូចខាងក្រោម៖

    AZURE_OPENAI_ENDPOINT=<your endpoint>
    AZURE_OPENAI_API_KEY=<your key>
    AZURE_OPENAI_DEPLOYMENT="dall-e-3"
    

    ស្វែងរកព័ត៌មាននេះនៅក្នុង Azure OpenAI Foundry Portal សម្រាប់ធនធានរបស់អ្នកនៅផ្នែក "Deployments"។

  2. ប្រមូលកំណត់បណ្ណាល័យខាងលើនៅក្នុងឯកសារដែលមានឈ្មោះ requirements.txt ដូចខាងក្រោម៖

    python-dotenv
    openai
    pillow
    requests
    
  3. បន្ទាប់មកបង្កើតបរិយាកាសមួយសម្រាប់ Virtual Environment ហើយដំឡើងបណ្ណាល័យ៖

    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt

    សម្រាប់ Windows ប្រើពាក្យបញ្ជាខាងក្រោមដើម្បីបង្កើតនិងដំណើរការបរិយាកាសវីរ៉ូឌួសីធីក៏

    python3 -m venv venv
    venv\Scripts\activate.bat
  4. បន្ថែមកូដខាងក្រោមក្នុងឯកសារ app.py

    import openai
    import os
    import requests
    from PIL import Image
    import dotenv
    from openai import OpenAI, AzureOpenAI
    
    # នាំចូល dotenv
    dotenv.load_dotenv()
    
    # កំណត់កំណែនៅសេវាកម្មអតិថិជន Azure OpenAI
    client = AzureOpenAI(
      azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"],
      api_key=os.environ['AZURE_OPENAI_API_KEY'],
      api_version = "2024-02-01"
      )
    try:
        # បង្កើតរូបភាពដោយប្រើ API រចនារូបភាព
        generation_response = client.images.generate(
                                prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',
                                size='1024x1024', n=1,
                                model=os.environ['AZURE_OPENAI_DEPLOYMENT']
                              )
    
        # កំណត់ថតសម្រាប់រូបភាពដែលបានរក្សាទុក
        image_dir = os.path.join(os.curdir, 'images')
    
        # បើថតមិនមាន សូមបង្កើតវា
        if not os.path.isdir(image_dir):
            os.mkdir(image_dir)
    
        # ចាប់ផ្តើមផ្លូវរូបភាព (ចំណាំថាប្រភេទឯកសារគួរតែជា png)
        image_path = os.path.join(image_dir, 'generated-image.png')
    
        # ស្ទូចយករូបភាពដែលបានបង្កើត
        image_url = generation_response.data[0].url  # ដកយក URL រូបភាពពីចម្លើយ
        generated_image = requests.get(image_url).content  # ទាញយករូបភាព
        with open(image_path, "wb") as image_file:
            image_file.write(generated_image)
    
        # បង្ហាញរូបភាពនៅក្នុងកម្មវិធីមើលរូបភាពលំនាំដើម
        image = Image.open(image_path)
        image.show()
    
    # ចាប់យកករណីកំហុស
    except openai.InvalidRequestError as err:
        print(err)

មកយល់ពានកូដនេះ៖

  • ជាដំបូង យើងនាំចូលបណ្ណាល័យដែលយើងត្រូវការរួមមានបណ្ណាល័យ OpenAI, dotenv, requests និង Pillow។

    import openai
    import os
    import requests
    from PIL import Image
    import dotenv
  • បន្ទាប់មក យើងបញ្ចូលតម្លៃបណ្ដាញបរិស្ថានពីឯកសារ .env

    # នាំចូល dotenv
    dotenv.load_dotenv()
  • បន្ទាប់មក យើងកំណត់ថ្នាក់តំណាងសេវាកម្ម Azure OpenAI

    # ទទួលយកចំណុចបញ្ចប់ និង ហើយពីអថេរបរិបទរបស់បរិស្ថាន
    client = AzureOpenAI(
        azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"],
        api_key=os.environ['AZURE_OPENAI_API_KEY'],
        api_version = "2024-02-01"
        )
  • បន្ទាប់មក យើងបង្កើតរូបភាព៖

    # បង្កើតរូបភាពដោយប្រើ API ការបង្កើតរូបភាព
    generation_response = client.images.generate(
                          prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',
                          size='1024x1024', n=1,
                          model=os.environ['AZURE_OPENAI_DEPLOYMENT']
                        )

    កូដខាងលើផ្តល់ការឆ្លើយតបជាអត្រាផលិត JSON ដែលមាន URL របស់រូបភាពដែលបានបង្កើត។ យើងអាចប្រើ URL ដើម្បីទាញយករូបភាព ហើយរក្សាទុកវាទៅឯកសារ។

  • ចុងក្រោយ យើងបើករូបភាពហើយប្រើកម្មវិធីមើលរូបភាពស្តង់ដារដើម្បីបង្ហាញវា៖

    image = Image.open(image_path)
    image.show()

ព័ត៌មានលម្អិតផ្នែកបង្កើតរូបភាព

មកមើលកូដបង្កើតរូបភាពបន្ថែម៖

  generation_response = client.images.generate(
                            prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',
                            size='1024x1024', n=1,
                            model=os.environ['AZURE_OPENAI_DEPLOYMENT']
                        )
  • prompt គឺជាបង្ហាញអត្ថបទដែលប្រើសម្រាប់បង្កើតរូបភាព។ ក្នុងករណីនេះ យើងប្រើបង្ហាញ "Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils"។
  • size គឺជាទំហំរូបភាពដែលត្រូវបានបង្កើត។ ក្នុងករណីនេះ យើងបង្កើតរូបភាពមានទំហំ 1024x1024 pixels។
  • n គឺជាចំនួនរូបភាពដែលត្រូវបានបង្កើត។ ក្នុងករណីនេះ យើងបង្កើតរូបភាពពីរ។
  • temperature ជាប៉ារ៉ាម៉ែត្រគ្រប់គ្រងភាពចៃដន្យនៃលទ្ធផលរបស់លីម៉ូដែល AI បង្កើត។ តម្លៃ temperature គឺពី 0 ដល់ 1 ដែល 0 មានន័យថាលទ្ធផលជារួមដំណើរការ និង 1 មានន័យថាលទ្ធផលជាចៃដន្យ។ តម្លៃលំនាំដើមគឺ 0.7។

មានការធ្វើអ្វីផ្សេងទៀតដែលអ្នកអាចធ្វើបានជាមួយរូបភាពដែលយើងនឹងគ្របដណ្តប់នៅផ្នែកបន្ទាប់។

សមត្ថភាពបន្ថែមនៃការបង្កើតរូបភាព

អ្នកបានឃើញរហូតមកថាយើងអាចបង្កើតរូបភាពបានក្នុងប៉ុន្មានបន្ទាត់ Python។ ទោះជាយ៉ាងណា មានអ្វីដែលអ្នកអាចធ្វើបានជាមួយរូបភាពច្រើនទៀត។

អ្នកអាចធ្វើដូចខាងក្រោម៖

  • អនុវត្តការកែប្រែ។ ដោយផ្តល់រូបភាពដែលមានស្រាប់ មួក និងបង្ហាញ អ្នកអាចផ្លាស់ប្តូររូបភាពបាន។ ឧទាហរណ៍ អ្នកអាចបន្ថែមអ្វីទៅមួយផ្នែកនៃរូបភាព។ សូមគិតរូបភាព bunny របស់យើង អ្នកអាចបន្ថែមមួកទៅសត្វ bunny។ របៀបដែលអ្នកធ្វើបាន គឺដោយផ្តល់រូបភាព មួក (កំណត់ផ្នែកដែលត្រូវបានផ្លាស់ប្តូរ) និងបង្ហាញអត្ថបទដែលពិពណ៌នាថាត្រូវធ្វើអ្វី។

សម្គាល់៖ នេះមិនគាំទ្រ​នៅក្នុង DALL-E 3ទេ។

នេះជាឧទាហរណ៍ប្រើ GPT Image៖

response = client.images.edit(
    model="gpt-image-1",
    image=open("sunlit_lounge.png", "rb"),
    mask=open("mask.png", "rb"),
    prompt="A sunlit indoor lounge area with a pool containing a flamingo"
)
image_url = response.data[0].url

រូបភាពមូលដ្ឋាននឹងមានតែផ្ទះសំណាក់ដែលមានស្រទាប់ទឹក ប៉ុន្តារូបភាពចុងក្រោយនឹងមានត្រយ៉ាងបំពង់ផងដែរ៖

  • បង្កើតយ៉ាងច្រើន។ គំនិតគឺថាអ្នកយករូបភាពដែលមានស្រាប់ ហើយទាមទារឱ្យបង្កើតវ៉ារីយ៉ង់ថ្មីៗ។ ដើម្បីបង្កើតយ៉ាងច្រើន អ្នកផ្តល់រូបភាព និងបង្ហាញអត្ថបទ និងកូដដូចខាងក្រោម៖

    response = openai.Image.create_variation(
      image=open("bunny-lollipop.png", "rb"),
      n=1,
      size="1024x1024"
    )
    image_url = response['data'][0]['url']

    សម្គាល់ វិធីនេះគាំទ្រតែ OpenAI ផ្គត់ផ្គង់ប៉ុណ្ណោះ។

អំពី Temperature

Temperature គឺជាប៉ារ៉ាម៉ែត្រគ្រប់គ្រងភាពចៃដន្យនៃលទ្ធផលរបស់លីម៉ូដែល AI បង្កើត។ តម្លៃ temperature គឺពី 0 ដល់ 1 ដែល 0 មានន័យថាលទ្ធផលជារួមដំណើរការ និង 1 មានន័យថាលទ្ធផលជាចៃដន្យ។ តម្លៃលំនាំដើមគឺ 0.7។

មកមើលឧទាហរណ៍របៀបដែល temperature ធ្វើការ ដោយរត់បង្ហាញនេះពីរដង៖

បង្ហាញ : "Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils"

Bunny on a horse holding a lollipop, version 1

ឥឡូវនេះ ចង់រត់បង្ហាញដូចគ្នានេះដើម្បីមើលថាយើងមិនបានរូបភាពដដែលពីរដងទេ៖

Generated image of bunny on horse

ដូចដែលអ្នកឃើញ រូបភាពទាំងពីរនេះស្រដៀងគ្នា ប៉ុន្តែមិនដូចគ្នាទេ។ មកចេញវាលេខ temperature ទៅជា 0.1 ហើយមើលថាបានចេញអ្វី៖

 generation_response = client.images.create(
        prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',    # បញ្ចូលអត្ថបទបញ្ជារបស់អ្នកនៅទីនេះ
        size='1024x1024',
        n=2
    )

ការផ្លាស់ប្តូរ temperature

ដូច្នេះ ចង់សាកល្បងធ្វើឱ្យការឆ្លើយតបមានការបញ្ជាក់ច្បាស់។ យើងអាចមើលឃើញពីររូបដែលបានបង្កើតថា រូបទីមួយមាន bunny ហើយរូបទីពីរក៏មានសេះ ដូចនេះរូបភាពមានភាពខុសគ្នាយ៉ាងច្រើន។

ឥឡូវនេះ អ្នកនៅតែផ្លាស់ប្ដូរកូដ ហើយកំណត់ temperature ទៅ 0 ដូចខាងក្រោម៖

generation_response = client.images.create(
        prompt='Bunny on horse, holding a lollipop, on a foggy meadow where it grows daffodils',    # បញ្ចូលអត្ថបទការជំរុញរបស់អ្នកនៅទីនេះ
        size='1024x1024',
        n=2,
        temperature=0
    )

ឥឡូវនេះពេលអ្នករត់កូដនេះ អ្នកនឹងបានរូបភាពទាំងពីរខាងក្រោម៖

  • Temperature 0, v1
  • Temperature 0 , v2

នៅទីនេះ អ្នកអាចឃើញមើលរូបភាពទាំងពីរដូចគ្នាច្រើនជាងមុន។

របៀបកំណត់ដែនកំណត់សម្រាប់កម្មវិធីរបស់អ្នកជាមួយ metaprompts

ជាមួយកំណត់ការបង្ហាញរបស់យើង អ្នកអាចបង្កើតរូបភាពសម្រាប់អតិថិជនរបស់អ្នករួចហើយ។ ទោះជាយ៉ាងណា យើងត្រូវតែបង្កើតដែនកំណត់សម្រាប់កម្មវិធីរបស់យើង។

ឧទាហរណ៍ អ្នកមិនចង់បង្កើតរូបភាពដែលមិនសុវត្ថិភាពសម្រាប់ការងារ ឬមិនសមស្របសម្រាប់កុមារទេ។

យើងអាចធ្វើបានដោយប្រើ metaprompts។ Metaprompts គឺជាបង្ហាញអត្ថបទដែលប្រើគ្រប់គ្រងលទ្ធផលរបស់លីម៉ូដែល AI បង្កើត។ ឧទាហរណ៍ យើងអាចប្រើ metaprompts ដើម្បីគ្រប់គ្រងលទ្ធផល ហើយធានាថារូបភាពដែលបានបង្កើតសុវត្ថិភាពសម្រាប់ការងារ ឬសមស្របសម្រាប់កុមារ។

វាធ្វើការយ៉ាងដូចម្តេច?

ឥឡូវ តើ metaprompts ធ្វើការយ៉ាងដូចម្តេច?

Metaprompts គឺជាបង្ហាញអត្ថបទដែលប្រើគ្រប់គ្រងលទ្ធផលរបស់លីម៉ូដែល AI បង្កើត។ វាត្រូវបានដាក់មុខបង្ហាញអត្ថបទ និងប្រើសម្រាប់គ្រប់គ្រងលទ្ធផលនៃលីម៉ូដែល ហើយបញ្ចូលក្នុងកម្មវិធីសម្រាប់គ្រប់គ្រងលទ្ធផលលីម៉ូដែល។ វារួមបញ្ចូលការបញ្ចូលបង្ហាញ និងការបញ្ចូល metaprompt នៅក្នុងបង្ហាញអត្ថបទតែមួយ។

ឧទាហរណ៍មួយនៃ metaprompt គឺដូចខាងក្រោម៖

You are an assistant designer that creates images for children.

The image needs to be safe for work and appropriate for children.

The image needs to be in color.

The image needs to be in landscape orientation.

The image needs to be in a 16:9 aspect ratio.

Do not consider any input from the following that is not safe for work or appropriate for children.

(Input)

ឥឡូវយើងមកមើលរបៀបប្រើ metaprompts ក្នុងកម្មវិធីបង្ហាញរបស់យើង។

disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult"

meta_prompt =f"""You are an assistant designer that creates images for children.

The image needs to be safe for work and appropriate for children.

The image needs to be in color.

The image needs to be in landscape orientation.

The image needs to be in a 16:9 aspect ratio.

Do not consider any input from the following that is not safe for work or appropriate for children.
{disallow_list}
"""

prompt = f"{meta_prompt}
Create an image of a bunny on a horse, holding a lollipop"

# TODO បន្ថែមការស្នើសុំដើម្បីបង្កើតរូបភាព

ពីបង្ហាញខាងលើ អ្នកអាចឃើញរូបភាពទាំងអស់ដែលត្រូវបានបង្កើតពិចារណានូវ metaprompt ។

ការងារ - បើកអោយសិស្សា

យើងបានណែនាំ Edu4All នៅដើមមេរៀននេះ។ ឥឡូវនេះពេលវេលាល្អសម្រាប់អោយសិស្សាអាចបង្កើតរូបភាពសម្រាប់ការបោះតង់របស់ពួកគេ។

សិស្សានុស្សានឹងបង្កើតរូបភាពសម្រាប់ការបោះតង់របស់ពួកគេ ដែលមានរូបភាពអាគាររំលេច ដោយអ្វីដែលជារូបភាពអាគាររំលេច នឹងអាស្រ័យលើសិស្សា។ សិស្សា​ត្រូវបានស្នើឱ្យប្រើប្រាស់ភាពច្នៃប្រឌិតរបស់ពួកគេក្នុងការដាក់អាគារទាំងនេះនៅក្នុងបរិបទផ្សេងៗ។

ដំណោះស្រាយ

នេះជាដំណោះស្រាយមួយសក្ដានុពល៖

import openai
import os
import requests
from PIL import Image
import dotenv
from openai import AzureOpenAI
# នាំចូល dotenv
dotenv.load_dotenv()

# ទទួលបានចំណុចបញ្ចប់ និងកូនសោពីបរិស្ថាន
client = AzureOpenAI(
  azure_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"],
  api_key=os.environ['AZURE_OPENAI_API_KEY'],
  api_version = "2024-02-01"
  )


disallow_list = "swords, violence, blood, gore, nudity, sexual content, adult content, adult themes, adult language, adult humor, adult jokes, adult situations, adult"

meta_prompt = f"""You are an assistant designer that creates images for children.

The image needs to be safe for work and appropriate for children.

The image needs to be in color.

The image needs to be in landscape orientation.

The image needs to be in a 16:9 aspect ratio.

Do not consider any input from the following that is not safe for work or appropriate for children.
{disallow_list}
"""

prompt = f"""{meta_prompt}
Generate monument of the Arc of Triumph in Paris, France, in the evening light with a small child holding a Teddy looks on.
""""

try:
    # បង្កើតរូបភាពដោយប្រើ API បង្កើតរូបភាព
    generation_response = client.images.generate(
        prompt=prompt,    # បញ្ចូលអត្ថបទលើសម្រង់របស់អ្នកនៅទីនេះ
        size='1024x1024',
        n=1,
    )
    # កំណត់ថតសម្រាប់រក្សារូបភាព
    image_dir = os.path.join(os.curdir, 'images')

    # ប្រសិនបើថតមិនមាន សូមបង្កើតវា
    if not os.path.isdir(image_dir):
        os.mkdir(image_dir)

    # ចាប់ផ្តើមផ្លូវរូបភាព (ចំណាំថាប្រភេទឯកសារត្រូវជា png)
    image_path = os.path.join(image_dir, 'generated-image.png')

    # ត្រឡប់រូបភាពដែលបានបង្កើត
    image_url = generation_response.data[0].url  # ដកយក URL របស់រូបភាពពីចម្លើយ
    generated_image = requests.get(image_url).content  # ទាញយករូបភាព
    with open(image_path, "wb") as image_file:
        image_file.write(generated_image)

    # កង្ហាររូបភាពក្នុងកម្មវិធីមើលរូបភាពលំនាំដើម
    image = Image.open(image_path)
    image.show()

# ចាប់យកករណីកំហុស
except openai.BadRequestError as err:
    print(err)

ការងារល្អ! សូមបន្តការសិក្សារបស់អ្នក

បន្ទាប់ពីបញ្ចប់មេរៀននេះ សូមពិនិត្យមើល សន្និដ្ឋានការសិក្សា AI បង្កើត របស់យើង ដើម្បីបន្តកម្រិតចំណេះដឹង Generative AI របស់អ្នក!

ចូលរួមផ្នែកមេរៀនទី ១០ ដែលយើងនឹងមើលថាតើធ្វើដូចម្តេចក្នុងការបង្កើតកម្មវិធី AI ជាមួយកូដទាប (build AI applications with low-code) ។


ការព្រមាន
ឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI Co-op Translator។ ខណៈពេលដែលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ឱ្យបានច្បាស់ថាបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវបានជម្រុញ។ ឯកសារដើមនៅក្នុងភាសាទំនើបរបស់វាគួរត្រូវបានចាត់ទុកជាភាពត្រឹមត្រូវប្រឹងប្រែងសម្រាប់ធាតុ។ សម្រាប់ព័ត៌មានសំខាន់ ខ្ញុំសូមណែនាំការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសពីការប្រើប្រាស់បកប្រែនេះឡើយ។