Jadual Kandungan
Objektif pembelajaran
Jadual Kandungan
Apa itu Gemini 2.0?
Ciri -ciri utama Gemini 2.0
Versi Gemini 2.0
Flask
HTML dan Bootstrap
Ciri -ciri utama chatbot perubatan
Carian Persamaan Facebook AI
Keterangan carta aliran: aliran kerja chatbot perubatan
Menyediakan persekitaran
Kod depan html untuk chatbot perubatan
Output UI
Membina Sistem Menjawab Soalan AI Dokumen berkuasa
Langkah 1: Import dan persediaan
Langkah 2: Inisialisasi dan konfigurasi aplikasi Flask
Langkah 3: Persediaan Pembalakan
Langkah 4: Model Gemini
Langkah 5: Persediaan Kedai Vektor
Langkah 6: Pengendalian Ralat (404)
Langkah 7: Laluan Halaman Utama (/)
Langkah 8: Laluan muat naik fail (/muat naik)
Langkah 9: Soalan Menjawab Laluan (/Tanya)
Langkah 10: Menjalankan Aplikasi Flask
Output
Kesimpulan
Takeaways utama
Soalan yang sering ditanya
Rumah Peranti teknologi AI Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Mar 31, 2025 pm 01:46 PM

Dalam era AI, chatbots telah merevolusikan bagaimana kita berinteraksi dengan teknologi. Mungkin salah satu kegunaan yang paling berkesan adalah dalam industri penjagaan kesihatan. Chatbots dapat menyampaikan maklumat yang cepat, tepat, dan membantu individu dengan lebih berkesan menguruskan kesihatan mereka. Dalam artikel ini, kita akan belajar bagaimana untuk membangunkan chatbot perubatan menggunakan Gemini 2.0, Flask, HTML, dan Bootstrap. Projek ini adalah mengenai mewujudkan platform tersuai yang diperibadikan dan mesra pengguna untuk menjawab pertanyaan yang berkaitan dengan kesihatan dengan ketepatan dan kelajuan.

Objektif pembelajaran

  • Memahami komponen utama dan seni bina chatbot perubatan dengan Gemini 2.0, dan bagaimana ia meningkatkan interaksi penjagaan kesihatan.
  • Ketahui cara mengintegrasikan Gemini 2.0 ke dalam chatbot perubatan untuk memberikan respons yang tepat dan tepat pada konteks yang disesuaikan dengan keperluan pesakit.
  • Terokai penggunaan HTML dan Bootstrap untuk merekabentuk antara muka chatbot yang responsif dan mesra pengguna.
  • Dapatkan pengalaman tangan dalam menubuhkan dan menggunakan chatbot perubatan yang diperibadikan.
  • Temui peranan Faiss dalam meningkatkan kecekapan carian untuk fungsi chatbot.

Jadual Kandungan

  • Apa itu Gemini 2.0?
  • Carian Persamaan Facebook AI
  • Menyediakan persekitaran
  • Kod depan html untuk chatbot perubatan
  • Membina Sistem Menjawab Soalan AI Dokumen berkuasa
  • Kesimpulan
  • Soalan yang sering ditanya

Apa itu Gemini 2.0?

Diumumkan pada bulan Disember 2024, Gemini 2.0 adalah lelaran terbaru Siri Model Besar (LLM) Google, yang dibangunkan oleh Google DeepMind. Ia memperkenalkan beberapa peningkatan utama, termasuk output multimodal, penggunaan alat asli, dan kebolehan agensi, meletakkannya sebagai model AI yang serba boleh untuk pelbagai aplikasi.

Membina pendahulunya, Gemini 1.5, Gemini 2.0 memanjangkan keupayaan untuk memproses dan menjana teks, imej, video, dan audio. Ia menambah penciptaan imej asli dan output teks-ke-ucapan berbilang bahasa untuk pengalaman pengguna yang lebih semulajadi dan interaktif.

Salah satu ciri yang paling cemerlang dalam Gemini 2.0 adalah AI yang agensi, yang membolehkan sistem merancang dan melaksanakan tugas secara bebas. Projek eksperimen seperti Projek Astra menunjukkan keupayaan ini dengan mengintegrasikan dengan perkhidmatan Google seperti carian dan peta untuk menyediakan bantuan kontekstual masa nyata. Satu lagi contoh ialah Projek Mariner, pelanjutan Chrome yang menavigasi web secara autonomi untuk melaksanakan tugas seperti membeli -belah dalam talian.

Ciri -ciri utama Gemini 2.0

  • Output multimodal: Proses Gemini 2.0 dan menghasilkan pelbagai jenis data, termasuk teks, imej, audio, dan video, membolehkan interaksi yang lebih semula jadi dan kaya konteks.
  • Penggunaan alat asli: Model ini dengan lancar mengintegrasikan dengan pelbagai alat dan platform, meningkatkan utilitinya di seluruh aplikasi yang berbeza.
  • Kemampuan Agentik: Gemini 2.0 memperkenalkan ejen AI yang mampu melaksanakan tugas -tugas kompleks dengan campur tangan manusia yang minimum, menandakan langkah ke arah sistem AI yang lebih autonomi.

Versi Gemini 2.0

Gemini 2.0 boleh didapati dalam beberapa versi, masing -masing disesuaikan untuk kes penggunaan tertentu:

  • Eksperimen Flash Gemini 2.0: Model eksperimen yang memberi tumpuan kepada kelajuan dan kecekapan, sesuai untuk pelaksanaan tugas pesat.
  • Gemini 2.0 Pro: Direka untuk pelbagai tugas, menawarkan keseimbangan antara prestasi dan kos.
  • Gemini 2.0 Ultra: Dioptimumkan untuk tugas yang sangat kompleks, memberikan prestasi unggul untuk menuntut aplikasi.

Flask

  • Flask adalah kerangka web ringan di Python, sesuai untuk membina aplikasi web berskala dan cekap.
  • Dalam chatbot, Flask mengendalikan operasi backend, termasuk integrasi API dengan Gemini 2.0, penghalaan, dan menguruskan interaksi pengguna.
  • Kesederhanaan dan fleksibiliti menjadikannya sempurna untuk tugas pembangunan dan integrasi yang cepat.

HTML dan Bootstrap

  • HTML membentuk asas struktur antara muka chatbot, memastikan reka bentuk web semantik dan boleh diakses.
  • Bootstrap, kerangka CSS, meningkatkan antara muka dengan menyediakan komponen reka bentuk yang responsif dan estetika. Ia memastikan chatbot berfungsi dengan lancar merentasi peranti, dari desktop ke telefon pintar.

Ciri -ciri utama chatbot perubatan

  • Antara Muka Perbualan: Chatbot melibatkan pengguna dengan interaksi semulajadi, seperti manusia yang dikuasakan oleh Gemini 2.0.
  • Reka bentuk yang mesra pengguna: Reka bentuk responsif yang dibolehkan Bootstrap memastikan kemudahan penggunaan pada mana-mana peranti.
  • Sokongan Pertanyaan Kesihatan: mampu menangani pelbagai soalan perubatan, dari gejala hingga nasihat kesihatan umum.
  • Kebolehcapaian: Direka untuk menjadi mudah untuk menavigasi untuk pengguna semua kecekapan teknikal.

Carian Persamaan Facebook AI

Meta (dahulunya Facebook) membangunkan Faiss sebagai perpustakaan sumber terbuka untuk carian kesamaan yang cekap dan clustering vektor padat. Pembelajaran mesin biasanya menggunakan Faiss, terutamanya untuk tugas-tugas yang melibatkan carian vektor berskala besar dan pengambilan jiran terdekat. Faiss mengoptimumkan pengendalian data dimensi tinggi, menjadikannya sesuai untuk aplikasi seperti sistem cadangan, pemprosesan bahasa semulajadi, dan pengambilan imej.

Singkatnya, Faiss membolehkan pengindeksan vektor padat dan menyokong carian anggaran cepat atau tepat ke atasnya. Ia menggunakan kuantisasi produk, HNSW (hierarki graf dunia kecil yang dilayari), dan teknik IVF (indeks fail terbalik) untuk mengimbangi perdagangan antara kelajuan dan ketepatan. Teknik -teknik ini secara dramatik mengurangkan kerumitan komputasi dan penggunaan memori dengan ketepatan yang tinggi dalam hasil carian. Walau bagaimanapun, FAISS terus menyokong kedua -dua CPU dan pecutan GPU, menjadikannya sesuai untuk berjuta -juta atau bahkan berbilion vektor untuk mengendalikan dataset.

Salah satu kekuatan utama Faiss adalah fleksibiliti. Ia menyediakan pelbagai strategi pengindeksan, membolehkan pengguna memilih pendekatan yang paling sesuai untuk kes penggunaan khusus mereka. Sebagai contoh, indeks rata menawarkan keupayaan carian yang tepat, manakala indeks berasaskan kuantisasi mengutamakan kecekapan. Python dan C API menjadikannya mudah diakses oleh pelbagai pemaju, dan reka bentuk modularnya membolehkan integrasi mudah ke dalam saluran paip pembelajaran mesin sedia ada.

Ketahui lebih lanjut mengenai pangkalan data vektor di sini.

Keterangan carta aliran: aliran kerja chatbot perubatan

Berikut adalah gambarajah aliran:

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

  • Mula : Pengguna bermula di halaman utama (index.html) dari chatbot perubatan.
  • Muat naik PDF untuk membina asas pengetahuan :
    • Pengguna memuat naik fail PDF melalui fungsi muat naik fail .
    • Backend memproses PDF dan membina pangkalan pengetahuan , menyimpannya di kedai vektor (vector_store.pkl) untuk pertanyaan masa depan.
    • Jika fail tidak sah dimuat naik, sistem mengendalikan ralat dan meminta pengguna untuk fail yang sah.
  • Tanya soalan perubatan :
    • Pengguna mengemukakan soalan perubatan melalui ciri Soalan Perubatan Ask (/bertanya) .
    • Sekiranya asas pengetahuan wujud, sistem mengambil dokumen yang berkaitan.
    • Sekiranya tiada asas pengetahuan wujud, mesej ralat dipaparkan atau pengalihan dimulakan.
  • Menjana tindak balas :
    • Dokumen yang relevan diambil dan diserahkan kepada model Gemini untuk menjana respons.
    • Model ini memproses input dan memberikan tindak balas perubatan yang tepat.
  • Paparan atau pengalihan :
    • Sambutan yang dihasilkan dipaparkan kepada pengguna atau diarahkan ke halaman yang sesuai untuk interaksi selanjutnya.
  • Akhir : Pengguna menerima respons dan boleh memilih untuk berinteraksi lebih lanjut atau menamatkan sesi.

Aliran kerja ini memastikan interaksi pengguna yang lancar, pengendalian ralat yang cekap, dan penjanaan tindak balas yang tepat menggunakan model Gemini untuk pengalaman chatbot perubatan yang lancar.

Menyediakan persekitaran

Mulailah dengan memasang kebergantungan yang diperlukan, mengkonfigurasi kunci API, dan menubuhkan frontend untuk menyediakan persekitaran anda untuk chatbot perubatan.

Pasang keperluan.txt

 PIP Install -r https://raw.githubusercontent.com/gouravlohar/medical-chatbot/refs/heads/master/requirements.txt
Salin selepas log masuk

Kunci API

Dapatkan kunci API Gemini 2.0 anda dari sini.

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Kod depan html untuk chatbot perubatan

Kod HTML ini membentuk antara muka pengguna depan aplikasi chatbot perubatan. Ia mewujudkan laman web interaktif di mana pengguna boleh:

  • Muat naik fail PDF untuk menyediakan konteks tambahan untuk chatbot.
  • Hantar mesej sembang untuk berinteraksi dengan chatbot perubatan berasaskan AI.

Antara muka menggunakan bootstrap untuk gaya dan jQuery untuk mengendalikan interaksi pengguna secara dinamik. Ia termasuk ciri -ciri seperti penunjuk menaip untuk paparan mesej chatbot dan lancar. Kod ini mengintegrasikan dengan back-end flask untuk memproses input pengguna dan mengembalikan respons AI-dihasilkan.

 



  <meta charset="utf-8">
  <meta http-equiv="x-ua-comple content" content="ie = edge">
  <meta name="viewport" content="width = peranti-lebar, skala awal = 1">
  <meta name="description" content="Demonstration of Gemini API dalam aplikasi Flask Python.">

  <tirtment> chatbot perubatan 
  <link rel="ikon pintasan" type="image/x-icon" href="%7B%7Burl_for%20('static',%20fileName%20=%20'images/iba_logo.png')%7D%7D">
  <link href="https://cdn.jsdelivr.net/npm/%5B%20ememail%20dilindungi%5D%20/dist/css/bootstrap.min.css" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css2?family=inter:wght@300;%0A%20%20<yaya>%0A%20%20%20%20:%20root%20%7B%0A%20%20%20%20%20%20-Primary-Gradient:%20Linear-Gradient%20(135Deg,%20#6E8EFB,%20#4834D4);%0A%20%20%20%20%20%20--chat-bg:%20#111827;%0A%20%20%20%20%20%20-message-bg:%20#1F2937;%0A%20%20%20%20%20%20--user-message-bg:%20#3730A3;%0A%20%20%20%20%20%20--Text-Primary:%20#FFF;%0A%20%20%20%20%20%20--Text-Secondary:%20#9CA3AF;%0A%20%20%20%20%7D%0A%0A%20%20%20%20badan%20%7B%0A%20%20%20%20%20%20font-family:%20'inter',%20sans-serif;%0A%20%20%20%20%20%20latar%20belakang%20warna:%20var%20(-chat-bg);%0A%20%20%20%20%20%20Warna:%20var%20(-teks%20utama);%0A%20%20%20%20%20%20Min-ketinggian:%20100VH;%0A%20%20%20%20%20%20Paparan:%20Flex;%0A%20%20%20%20%20%20flex-arah:%20lajur;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Chat-Container%20%7B%0A%20%20%20%20%20%20Max-Width:%201200px;%0A%20%20%20%20%20%20Margin:%200%20Auto;%0A%20%20%20%20%20%20Padding:%202rem;%0A%20%20%20%20%20%20Flex:%201;%0A%20%20%20%20%20%20Paparan:%20Flex;%0A%20%20%20%20%20%20flex-arah:%20lajur;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.title%20%7B%0A%20%20%20%20%20%20Teks-Align:%20Pusat;%0A%20%20%20%20%20%20Margin-Bottom:%201rem;%0A%20%20%20%20%20%20saiz%20font:%202rem;%0A%20%20%20%20%20%20Font-Weight:%20600;%0A%20%20%20%20%20%20Warna:%20var%20(-teks%20utama);%0A%20%20%20%20%7D%0A%0A%20%20%20%20.warning%20%7B%0A%20%20%20%20%20%20Teks-Align:%20Pusat;%0A%20%20%20%20%20%20margin-bottom:%202rem;%0A%20%20%20%20%20%20saiz%20font:%201rem;%0A%20%20%20%20%20%20warna:%20var%20(-teks-menengah);%0A%20%20%20%20%7D%0A%0A%20%20%20%20.messages-container%20%7B%0A%20%20%20%20%20%20Flex:%201;%0A%20%20%20%20%20%20limpahan-y:%20auto;%0A%20%20%20%20%20%20Padding:%201rem;%0A%20%20%20%20%20%20Tingkah%20laku%20tatal:%20licin;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.message%20%7B%0A%20%20%20%20%20%20Margin-Bottom:%201rem;%0A%20%20%20%20%20%20Kelegapan:%200;%0A%20%20%20%20%20%20Transform:%20Translate%20(20px);%0A%20%20%20%20%20%20Animasi:%20Fadein%200.3s%20mudah%20ke%20hadapan;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.message-content%20%7B%0A%20%20%20%20%20%20Padding:%201rem;%0A%20%20%20%20%20%20Radius%20sempadan:%201rem;%0A%20%20%20%20%20%20Max-Width:%2080%;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.user-message%20.message-content%20%7B%0A%20%20%20%20%20%20Latar%20Belakang:%20var%20(-pengguna-message-bg);%0A%20%20%20%20%20%20margin-kiri:%20auto;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.bot-message%20.message-content%20%7B%0A%20%20%20%20%20%20Latar%20Belakang:%20var%20(-mesej-bg);%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Input-Container%20%7B%0A%20%20%20%20%20%20Padding:%201rem;%0A%20%20%20%20%20%20Latar%20Belakang:%20var%20(-chat-bg);%0A%20%20%20%20%20%20Border-top:%201px%20RGBA%20pepejal%20(255,%20255,%20255,%200.1);%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Chat-Input%20%7B%0A%20%20%20%20%20%20Latar%20Belakang:%20var%20(-mesej-bg);%0A%20%20%20%20%20%20Sempadan:%20Tiada;%0A%20%20%20%20%20%20Radius%20sempadan:%201.5rem;%0A%20%20%20%20%20%20Padding:%201rem%201.5rem;%0A%20%20%20%20%20%20Warna:%20var%20(-teks%20utama);%0A%20%20%20%20%20%20lebar:%20calc%20(100%%20-%20120px);%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Send-button%20%7B%0A%20%20%20%20%20%20latar%20belakang:%20var%20(-gradien%20utama);%0A%20%20%20%20%20%20Sempadan:%20Tiada;%0A%20%20%20%20%20%20Radius%20sempadan:%201.5rem;%0A%20%20%20%20%20%20Padding:%201rem%202rem;%0A%20%20%20%20%20%20Warna:%20Putih;%0A%20%20%20%20%20%20Font-Weight:%20600;%0A%20%20%20%20%20%20Peralihan:%20Semua%200.3s%20mudah;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Send-button:%20hover%20%7B%0A%20%20%20%20%20%20Transform:%20Translatey%20(-2px);%0A%20%20%20%20%20%20Box-shadow:%200%205px%2015px%20RGBA%20(110,%20142,%20251,%200.4);%0A%20%20%20%20%7D%0A%0A%20%20%20%20.typing-indicator%20%7B%0A%20%20%20%20%20%20Paparan:%20Flex;%0A%20%20%20%20%20%20Jurang:%200.5rem;%0A%20%20%20%20%20%20Padding:%201rem;%0A%20%20%20%20%20%20Latar%20Belakang:%20var%20(-mesej-bg);%0A%20%20%20%20%20%20Radius%20sempadan:%201rem;%0A%20%20%20%20%20%20lebar:%20kandungan%20yang%20sesuai;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Typing-dot%20%7B%0A%20%20%20%20%20%20lebar:%208px;%0A%20%20%20%20%20%20Ketinggian:%208px;%0A%20%20%20%20%20%20latar%20belakang:%20var%20(-teks-menengah);%0A%20%20%20%20%20%20Radius%20sempadan:%2050%;%0A%20%20%20%20%20%20Animasi:%20Menaip%201.4s%20Infinite%20Ease-In-Out;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Typing-dot:%20nth-child%20(2)%20%7B%0A%20%20%20%20%20%20Animasi-Delay:%200.2S;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.Typing-dot:%20nth-child%20(3)%20%7B%0A%20%20%20%20%20%20Animasi-Delay:%200.4s;%0A%20%20%20%20%7D%0A%0A%20%20%20%20@keyframes%20menaip%20%7B%0A%20%20%20%20%20%200%,%0A%20%20%20%20%20%20100%%20%7B%0A%20%20%20%20%20%20%20%20Transform:%20Translate%20(0);%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%2050%%20%7B%0A%20%20%20%20%20%20%20%20Transform:%20Translatey%20(-10px);%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20@keyframes%20fadein%20%7B%0A%20%20%20%20%20%20ke%20%7B%0A%20%20%20%20%20%20%20%20Kelegapan:%201;%0A%20%20%20%20%20%20%20%20Transform:%20Translate%20(0);%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20/%20*%20Pemformatan%20mesej%20*/%0A%20%20%20%20.bot-message%20kuat%20%7B%0A%20%20%20%20%20%20Warna:%20#818CF8;%0A%20%20%20%20%20%20Font-Weight:%20600;%0A%20%20%20%20%7D%0A%0A%20%20%20%20.bot-message%20ul%20%7B%0A%20%20%20%20%20%20padding-left:%201.5rem;%0A%20%20%20%20%20%20Margin:%200.5rem%200;%0A%20%20%20%20%7D%0A%20%20</gaya>%0A</head>%0A%0A<body>%0A%20%20<dana>%0A%20%20%20%20<div>%20Selamat%20datang%20ke%20chatbot%20perubatan%20</div>%0A%20%20%20%20<div>%20NOTA:%20Ini%20adalah%20chatbot%20AI%20dan%20boleh%20membuat%20kesilapan.%20Sila%20sahkan%20maklumat%20yang%20diberikan.%20</Div>%0A%20%20%20%20%7B%20%%20dengan%20mesej%20=%20get_flashed_messages%20()%20%%7D%0A%20%20%20%20%20%20%7B%20%%20jika%20mesej%20%%7D%0A%20%20%20%20%20%20%20%20<div%20role%20=%20" alert>
          {{mesej [0]}}
        
      { % endif %}
    { % endwith %}
    <form method="post" enctype="multipart/form-data" action="/muatload">
      <dana>
        <label untuk="pdf_files"> muat naik fail pdf </label>
        <input type="file" name="pdf_files" multiple>
      
      <button type="Hantar"> Muat naik pdfs 
    </button></dana>
</form>
    <dana>
      
    
    <form kaedah="pos">
      <dana>
        <input type="text" name="prompt" placeholder="taipkan mesej anda ...">
        <button type="Hantar"> Hantar </button>
      
    </dana>
</form>
  

  <script src="https://code.jquery.com/jquery-3.6.3.min.js"> </script>
  <script>
    $ (dokumen) .ready (fungsi () {
      $ ("##berbentuk sembang"). Kirim (fungsi (acara) {
        event.PreventDefault ();
        var soal = $ ("#chat-input"). val ();
        jika (soalan.trim () === "") kembali;

        Biarkan Usermessage = `
          <dana>
            <dana>
              $ {soalan}
            
           `;
        $ ("#Mesej-Kontainer"). Tambah (userMessage);
        $ ("#chat-input"). val ("");

        Biarkan typingIndicator = `
          <dana>
            <div> 
            <div> 
            <div> 
           `;
        $ ("#Mesej-Kontainer"). Tambah (typingIndicator);

        $ .ajax ({
          Taip: "Pos",
          URL: "/tanya",
          Data: {
            &#39;Prompt&#39;: Soalan
          },
          Kejayaan: Fungsi (data) {
            $ (". Menaip-penunjuk"). Keluarkan ();
            Biarkan CleanedData = data
              .replace (/\*\*(.*?)\*\*/ g, "<strong> $ 1 ")
              .replace (/\ n/g, "<br>")
              .replace (/- (.*?) (? = \ n | $)/g, "<li> $ 1 ");
            Biarkan Botmessage = `
              <dana>
                <dana>
                  $ {CleanedData}
                
               `;
            $ ("#Mesej-Kontainer"). Tambah (botMessage);
          }
        });
      });
    });
  </script>


</dana></tirtment>
Salin selepas log masuk

Output UI

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Membina Sistem Menjawab Soalan AI Dokumen berkuasa

Bayangkan dapat memuat naik beberapa PDF dan bertanya-tanya soalan mengenai kandungan mereka, menerima jawapan yang tepat dan tepat dalam beberapa saat. Inilah janji sistem pertanyaan AI yang berkuasa dokumen. Dengan menggabungkan kuasa model AI seperti Gemini, teknik penyembuhan dokumen, dan antara muka web berasaskan flask, anda boleh membuat alat pintar yang mampu memahami, memproses, dan bertindak balas terhadap pertanyaan pengguna berdasarkan dokumen yang dimuat naik. Di bawah ini kami akan membimbing anda melalui langkah-langkah untuk membina sistem sedemikian, dari menubuhkan persekitaran untuk melaksanakan ciri-ciri canggih seperti carian persamaan dan respons masa nyata.

Langkah 1: Import dan persediaan

Mulailah dengan mengimport perpustakaan dan modul yang diperlukan, seperti Flask untuk aplikasi web, Google Generative AI untuk integrasi model, dan Langchain untuk pengendalian dokumen dan pengurusan kedai vektor.

 Dari Flask Import Flask, Render_Template, Permintaan, Redirect, URL_FOR, Flash
Import Google.Generativeai sebagai genai
dari langchain_core.prompts import prompttemplate
dari Langchain.Chains Import Llmchain
dari langchain_community.document_loaders import pypdfloader
dari langchain_community.vectorstores import faiss
dari langchain_huggingface import HuggingFaceembeddings
Import OS
import pembalakan
Import Pickle
Salin selepas log masuk

Langkah 2: Inisialisasi dan konfigurasi aplikasi Flask

Sediakan aplikasi Flask, konfigurasikan tetapan utama seperti folder muat naik untuk PDFS, dan tentukan kunci rahsia untuk pengurusan sesi.

 app = flask (__ name__)
app.config ['upload_folder'] = 'muat naik'
app.secret_key = 'SuperSecretkey'
os.makedirs (app.config ['upload_folder'], exist_ok = t
Salin selepas log masuk

Langkah 3: Persediaan Pembalakan

Konfigurasikan pembalakan untuk menangkap maklumat dan kesilapan penting, memastikan debugging dan pemantauan yang lancar semasa operasi aplikasi.

 Logging.BasicConfig (level = logging.info)
logger = logging.getLogger (__ name__)
Salin selepas log masuk

Langkah 4: Model Gemini

Inisialisasi model AI Gemini dan konfigurasikannya dengan kekunci API anda untuk membolehkan interaksi dengan model untuk menghasilkan kandungan.

 model = genai.generativemodel ('Gemini-2.0-flash-exp')
my_api_key_gemini = os.getenv ('Google_api_key')
genai.configure (api_key = my_api_key_gemini)
Salin selepas log masuk

Langkah 5: Persediaan Kedai Vektor

Sediakan kedai vektor untuk menyimpan embeddings dokumen, memuatkannya jika sudah ada, untuk melakukan carian kesamaan dokumen yang cekap kemudian.

 vector_store = Tiada

# Muatkan kedai vektor sedia ada jika ada
jika os.path.exists ('vector_store.pkl'):
    dengan terbuka ('vector_store.pkl', 'rb') sebagai f:
        vector_store = pickle.load (f)
Salin selepas log masuk
  • vector_store = Tiada: Mengasaskan pembolehubah untuk menyimpan kedai vektor.
  • jika os.path.exists ('vector_store.pkl'): cek jika fail kedai vektor yang disimpan sebelum ini (vector_store.pkl) wujud.

Jika ia wujud, sistem memuat kedai vektor dari fail menggunakan pickle.load (f).

Kedai -kedai ini menyenaraikan embeddings (perwakilan berangka dokumen) untuk carian kesamaan yang cekap.

Langkah 6: Pengendalian Ralat (404)

Tentukan pengendali untuk 404 kesilapan untuk mengalihkan pengguna ke halaman utama apabila mereka mengakses laluan yang tidak wujud.

 @app.errorhandler (404)
def page_not_found (e):
    Kembalikan semula (url_for ('indeks'))
Salin selepas log masuk

Jika pengguna mengakses halaman yang tidak wujud (iaitu, ralat 404 berlaku), sistem mengalihkannya ke halaman utama (indeks).

Langkah 7: Laluan Halaman Utama (/)

Buat laluan untuk halaman utama aplikasi web, menjadikan templat HTML awal kepada pengguna.

 @App.Route ('/')
indeks def ():
    kembali render_template ('index.html')
Salin selepas log masuk

Langkah 8: Laluan muat naik fail (/muat naik)

Melaksanakan laluan muat naik fail, membolehkan pengguna memuat naik fail PDF, memprosesnya, dan menukarnya ke dalam embeddings untuk kedai vektor.

 @app.Route ('/upload', methods = ['post'])
muat naik def ():
    Global Vector_Store
    Cuba:
        jika 'pdf_files' tidak dalam request.files:
            Flash ("Tiada bahagian fail")
            Kembalikan semula (url_for ('indeks'))
        
        fail = request.files.getList ('pdf_files')
        Dokumen = []
        
        untuk fail dalam fail:
            jika file.filename == '':
                Flash ("Tiada fail yang dipilih")
                Kembalikan semula (url_for ('indeks'))
            file_path = os.path.join (app.config ['upload_folder'], file.filename)
            file.save (file_path)
            
            pdf_loader = pypdfloader (file_path)
            Documents.extend (pdf_loader.load ())
        
        # Buat embeddings menggunakan HuggingFaceembeddings
        embeddings = huggingFaceembeddings ()
        
        Sekiranya vector_store tidak ada:
            # Buat kedai vektor baru jika tidak ada
            vector_store = faiss.from_documents (dokumen, embeddings)
        lain:
            # Tambahkan dokumen baru ke kedai vektor yang ada
            vector_store.add_documents (dokumen)
        
        # Simpan kedai vektor yang dikemas kini
        dengan terbuka ('vector_store.pkl', 'wb') sebagai f:
            pickle.dump (vector_store, f)
        
        Flash ("PDFS dimuat naik dan diproses dengan jayanya. Pangkalan pengetahuan sudah siap.")
        Kembalikan semula (url_for ('indeks'))
    Kecuali pengecualian sebagai e:
        logger.error ("Kesalahan berlaku semasa memproses PDFS: %s", e)
        Flash ("Ralat berlaku semasa memproses PDFS.")
        Kembalikan semula (url_for ('indeks'))
Salin selepas log masuk
  • Laluan ini membolehkan pengguna memuat naik fail PDF.
  • Objek permintaan.files diperiksa untuk kehadiran kekunci PDF_FILES .
  • Fail disimpan ke direktori muat naik.
  • PYPDFLoader digunakan untuk mengekstrak teks dari setiap PDF yang dimuat naik.
  • Teks yang diekstrak kemudiannya ditukar menjadi embeddings menggunakan HuggingFaceembeddings .
  • Lembutan disimpan di vector_store (dibuat menggunakan faiss).
  • Vector_store yang dikemas kini disimpan ke vector_store.pkl untuk kegunaan masa depan.
  • Jika muat naik berjaya, mesej kejayaan ditunjukkan. Sekiranya terdapat ralat, mesej ralat ditunjukkan.

Langkah 9: Soalan Menjawab Laluan (/Tanya)

Melaksanakan laluan pertanyaan, di mana pengguna boleh memasukkan soalan, dan aplikasi mengambil dokumen yang relevan dan menghasilkan respons berkuasa AI berdasarkan kandungan.

 @app.Route ('/tanya', kaedah = ['pos'])
def tanya ():
    Global Vector_Store
    Sekiranya vector_store tidak ada:
        Kembali "Pangkalan pengetahuan tidak siap. Sila muat naik PDFS terlebih dahulu."

    soalan = request.form ['prompt']
    # Ambil dokumen yang berkaitan berdasarkan soalan
    relevan_docs = vector_store.similarity_search (soalan)
    konteks = "" .join ([doc.page_content untuk doc in relevan_docs])
    custom_prompt = f "Anda adalah doktor terbaik. Hanya memberikan jawapan yang berkaitan dengan perubatan. Konteks: {konteks} Soalan: {soalan}"

    respons = model.generate_content (custom_prompt)

    jika respons.text:
        RETURN RESPONSE.TEXT
    lain:
        Kembali "Maaf, tapi saya fikir Gemini tidak mahu menjawabnya!"
Salin selepas log masuk
  • Laluan ini membolehkan pengguna bertanya.
  • Jika kedai vektor tidak siap (iaitu, tiada PDF yang dimuat naik lagi), aplikasinya meminta pengguna untuk memuat naik PDFS terlebih dahulu.
  • Soalan pengguna diekstrak dari borang.
  • Aplikasi ini melakukan carian kesamaan (vector_store.similarity_search) untuk mencari dokumen yang relevan berdasarkan soalan.
  • Aplikasi ini mewujudkan prompt tersuai menggunakan konteks dari dokumen yang diambil, mengarahkan model AI (Gemini) untuk memberikan jawapan yang berkaitan dengan perubatan.
  • Model ini menghasilkan respons menggunakan model.generate_content (custom_prompt).
  • Jika model memberikan respons, aplikasi mengembalikannya kepada pengguna. Jika tidak, aplikasi mengembalikan mesej lalai.

Langkah 10: Menjalankan Aplikasi Flask

Akhirnya, jalankan aplikasi Flask dalam mod debug untuk memulakan aplikasi web dan menjadikannya mudah untuk pengguna berinteraksi.

 jika __name__ == '__main__':
    app.run (debug = benar)
Salin selepas log masuk

Dapatkan kod di GitHub di sini

Output

Pdf saya gunakan untuk menguji pautan

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Segera

 Berapa banyak jenis sakit kepala?
Salin selepas log masuk

Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding

Selepas memuat naik PDF, sistem memberikan respons secara langsung dari kandungannya.

Kesimpulan

Dalam blog ini, kami telah membincangkan cara membuat aplikasi web berasaskan flask yang menggunakan alat dan teknik untuk membina asas pengetahuan dari PDF yang dimuat naik. Aplikasi ini membolehkan pengguna bertanya soalan berkaitan perubatan dan mendapatkan jawapan yang relevan secara kontekstual berdasarkan kandungan dokumen yang dimuat naik dengan mengintegrasikan model generatif seperti Google Gemini dan mekanisme carian vektor dengan Langchain. Dalam sistem sedemikian, AI, yang bersekutu dengan alat moden untuk pembangunan web, dapat sepenuhnya mengautomasikan pengambilan maklumat dalam pengalaman interaktif pintar.

Dengan memahami struktur asas kod ini, dari fail yang dimuat naik untuk menjawab soalan, kita melihat bagaimana aplikasi flask asas dapat diperluaskan dengan keupayaan AI yang kuat. Sama ada membangunkan sistem pengurusan pengetahuan atau hanya merancang chatbot, teknologi yang dibincangkan yang sama boleh berguna dan membuat anda sedang berjalan.

Takeaways utama

  • Dengan menggunakan alat seperti Langchain dan Faiss, kita boleh menukar dokumen PDF yang tidak berstruktur ke dalam asas pengetahuan yang berkuasa dan dicari yang bertindak balas dengan bijak kepada pertanyaan pengguna.
  • Chatbot Perubatan dengan Gemini 2.0 membolehkan bantuan perubatan yang diperibadikan, masa nyata dengan memanfaatkan model AI lanjutan untuk respons yang tepat.
  • Anda boleh menggunakan model Gemini Google untuk menghasilkan jawapan yang relevan secara kontekstual dengan berinteraksi dengan dokumen vektor, yang menawarkan pengalaman pengguna yang dinamik dan interaktif.
  • Flask berfungsi sebagai rangka kerja ringan yang membawa semuanya bersama -sama, mengendalikan muat naik fail, pemprosesan, dan interaksi pengguna dengan lancar.
  • Faiss, enjin carian vektor yang kuat, membantu mencari dokumen yang paling relevan untuk pertanyaan pengguna, meningkatkan kualiti dan ketepatan respons.

Soalan yang sering ditanya

Q1. Apakah tujuan Laluan /Ask dalam permohonan Flask?

A. Laluan /Ask membolehkan pengguna mengemukakan soalan. Aplikasi ini kemudian menggunakan PDF yang dimuat naik untuk mencari maklumat yang relevan dan menghasilkan respons menggunakan model AI Gemini Google.

S2. Bagaimanakah PDFS proses permohonan?

A. Aplikasi ini menggunakan PYPDFLoader untuk mengekstrak teks dari PDF yang dimuat naik. Teks ini kemudiannya tertanam ke dalam vektor menggunakan HuggingFaceembeddings, dan disimpan di kedai vektor Faiss untuk carian persamaan cepat.

Q3. Bolehkah saya menggunakan aplikasi ini untuk dokumen selain perubatan?

A. Ya, anda boleh menyesuaikan aplikasi ke pelbagai domain. Dengan menukar prompt, anda boleh menyesuaikan fungsi-fungsi jawapan untuk memadankan bidang yang berbeza, seperti undang-undang, pendidikan, atau teknikal.

Q4. Bagaimana kedai vektor disimpan dan dimuatkan?

A. Kedai vektor disimpan sebagai fail .pkl menggunakan modul Python's Pickle. Cek apl untuk kewujudan fail pada permulaan dan memuatkannya jika tersedia, memastikan bahawa dokumen yang dimuat naik sebelum ini berterusan di sesi.

S5. Apa yang saya perlukan untuk menjalankan aplikasi ini di mesin tempatan saya?

A. Anda memerlukan Python dan Flask dipasang, bersama -sama dengan kebergantungan seperti Google.Generativeai, Langchain, Faiss, dan HuggingFaceembeddings. Anda juga memerlukan kunci API untuk model Gemini Google. Pastikan untuk menyediakan persekitaran maya untuk menguruskan kebergantungan.

Atas ialah kandungan terperinci Sembang perubatan dengan Gemini 2.0, Flask dan Vector Embedding. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1667
14
Tutorial PHP
1273
29
Tutorial C#
1255
24
10 Pelanjutan pengekodan AI generatif dalam kod vs yang mesti anda pelajari 10 Pelanjutan pengekodan AI generatif dalam kod vs yang mesti anda pelajari Apr 13, 2025 am 01:14 AM

Hei ada, pengekodan ninja! Apa tugas yang berkaitan dengan pengekodan yang anda telah merancang untuk hari itu? Sebelum anda menyelam lebih jauh ke dalam blog ini, saya ingin anda memikirkan semua kesengsaraan yang berkaitan dengan pengekodan anda-lebih jauh menyenaraikan mereka. Selesai? - Let &#8217

GPT-4O vs OpenAI O1: Adakah model Openai baru bernilai gembar-gembur? GPT-4O vs OpenAI O1: Adakah model Openai baru bernilai gembar-gembur? Apr 13, 2025 am 10:18 AM

Pengenalan OpenAI telah mengeluarkan model barunya berdasarkan seni bina "strawberi" yang sangat dijangka. Model inovatif ini, yang dikenali sebagai O1, meningkatkan keupayaan penalaran, yang membolehkannya berfikir melalui masalah MOR

Pixtral -12b: Model Multimodal Pertama Mistral Ai ' Pixtral -12b: Model Multimodal Pertama Mistral Ai ' Apr 13, 2025 am 11:20 AM

Pengenalan Mistral telah mengeluarkan model multimodal yang pertama, iaitu Pixtral-12B-2409. Model ini dibina atas parameter 12 bilion Mistral, NEMO 12B. Apa yang membezakan model ini? Ia kini boleh mengambil kedua -dua gambar dan Tex

Bagaimana untuk menambah lajur dalam SQL? - Analytics Vidhya Bagaimana untuk menambah lajur dalam SQL? - Analytics Vidhya Apr 17, 2025 am 11:43 AM

Pernyataan Jadual Alter SQL: Menambah lajur secara dinamik ke pangkalan data anda Dalam pengurusan data, kebolehsuaian SQL adalah penting. Perlu menyesuaikan struktur pangkalan data anda dengan cepat? Pernyataan Jadual ALTER adalah penyelesaian anda. Butiran panduan ini menambah colu

Bagaimana Membina Ejen AI Multimodal Menggunakan Rangka Kerja AGNO? Bagaimana Membina Ejen AI Multimodal Menggunakan Rangka Kerja AGNO? Apr 23, 2025 am 11:30 AM

Semasa bekerja pada AIS AI, pemaju sering mendapati diri mereka menavigasi perdagangan antara kelajuan, fleksibiliti, dan kecekapan sumber. Saya telah meneroka rangka kerja AI yang agentik dan menjumpai Agno (sebelum ini adalah Phi-

Beyond the Llama Drama: 4 Benchmarks Baru Untuk Model Bahasa Besar Beyond the Llama Drama: 4 Benchmarks Baru Untuk Model Bahasa Besar Apr 14, 2025 am 11:09 AM

Penanda Aras Bermasalah: Kajian Kes Llama Pada awal April 2025, Meta melancarkan model Llama 4 suite, dengan metrik prestasi yang mengagumkan yang meletakkan mereka dengan baik terhadap pesaing seperti GPT-4O dan Claude 3.5 sonnet. Pusat ke LAUNC

Terbuka beralih fokus dengan GPT-4.1, mengutamakan pengekodan dan kecekapan kos Terbuka beralih fokus dengan GPT-4.1, mengutamakan pengekodan dan kecekapan kos Apr 16, 2025 am 11:37 AM

Pelepasan ini termasuk tiga model yang berbeza, GPT-4.1, GPT-4.1 Mini dan GPT-4.1 Nano, menandakan langkah ke arah pengoptimuman khusus tugas dalam landskap model bahasa yang besar. Model-model ini tidak segera menggantikan antara muka yang dihadapi pengguna seperti

Bagaimana permainan ADHD, alat kesihatan & chatbots AI mengubah kesihatan global Bagaimana permainan ADHD, alat kesihatan & chatbots AI mengubah kesihatan global Apr 14, 2025 am 11:27 AM

Bolehkah permainan video meringankan kebimbangan, membina fokus, atau menyokong kanak -kanak dengan ADHD? Memandangkan cabaran penjagaan kesihatan melonjak di seluruh dunia - terutamanya di kalangan belia - inovator beralih kepada alat yang tidak mungkin: permainan video. Sekarang salah satu hiburan terbesar di dunia Indus

See all articles