pip install -U bida
from bida import ChatLLM
llm = ChatLLM (
model_type = 'openai' , # 调用openai的chat模型
model_name = 'gpt-4' ) # 设定模型为:gpt-4,默认是gpt3.5
result = llm . chat ( "从1加到100等于多少?只计算奇数相加呢?" )
print ( result )
from bida import ChatLLM
llm = ChatLLM (
model_type = "baidu" , # 调用百度文心一言
stream_callback = ChatLLM . stream_callback_func ) # 使用默认的流式输出函数
llm . chat ( "你好呀,请问你是谁?" )
perusahaan teladan | Tipe model | Nama model | Apakah akan mendukung | menjelaskan |
---|---|---|---|---|
OpenAI | Mengobrol | gpt-3.5, gpt-4 | √ | Mendukung semua model gpt3.5 dan gpt4 |
Penyelesaian Teks | teks-davinci-003 | √ | Model kelas pembuatan teks | |
Penyematan | teks-penyematan-ada-002 | √ | model vektor | |
Baidu-Wen Xin Yiyan | Mengobrol | ernie-bot, ernie-bot-turbo | √ | Model Obrolan komersial Baidu |
Penyematan | penyematan_v1 | √ | Model vektorisasi komersial Baidu | |
Model yang dihosting | Berbagai model sumber terbuka | √ | Untuk berbagai model sumber terbuka yang dihosting oleh Baidu, silakan konfigurasikan sendiri menggunakan protokol akses model pihak ketiga Baidu. Untuk detailnya, lihat bagian akses model di bawah. | |
Alibaba Cloud-Tongyi Qianwen | Mengobrol | qwen-v1, qwen-plus-v1, qwen-7b-obrolan-v1 | √ | Model Obrolan komersial dan sumber terbuka Alibaba Cloud |
Penyematan | penyematan teks-v1 | √ | Model vektorisasi komersial Alibaba Cloud | |
Model yang dihosting | Berbagai model sumber terbuka | √ | Untuk jenis model sumber terbuka lainnya yang dihosting oleh Alibaba Cloud, silakan konfigurasikan sendiri menggunakan protokol akses model pihak ketiga Alibaba Cloud. Untuk detailnya, lihat bagian akses model di bawah. | |
Mini Maks | Mengobrol | abab5, abab5.5 | √ | Model Obrolan Komersial MiniMax |
Obrolan Pro | abab5.5 | √ | Model Obrolan komersial MiniMax, menggunakan mode pro penyelesaian Obrolan yang disesuaikan, mendukung skenario percakapan multi-orang dan multi-bot, contoh percakapan, pembatasan format pengembalian, panggilan fungsi, plug-in, dan fungsi lainnya | |
Penyematan | embo-01 | √ | Model vektor komersial MiniMax | |
Spektrum kebijaksanaan AI-ChatGLM | Mengobrol | ObrolanGLM-Pro, Std, Lite, characterglm | √ | Model besar komersial multi-versi Zhipu AI |
Penyematan | Penyematan Teks | √ | Model vektor teks komersial Zhipu AI | |
iFlytek-Spark | Mengobrol | SparkDesk V1.5, V2.0 | √ | iFlytek Spark Model Besar Kognitif |
Penyematan | penyematan | √ | Model vektor teks iFlytek Spark | |
SenseTime-RiRiXin | Mengobrol | nova-ptc-xl-v1, nova-ptc-xs-v1 | √ | SenseNova SenseTime model besar baru setiap hari |
Intelijen Baichuan | Mengobrol | baichuan-53b-v1.0.0 | √ | Model besar Baichuan 53B |
Tencent-Hunyuan | Mengobrol | Tencent Hunyuan | √ | Model besar Tencent Hunyuan |
Model sumber terbuka yang diterapkan sendiri | Obrolan, Penyelesaian, Penyematan | Berbagai model sumber terbuka | √ | Menggunakan model sumber terbuka yang diterapkan oleh FastChat dan penerapan lainnya, antarmuka API Web yang disediakan mengikuti RESTful API yang Kompatibel dengan OpenAI dan dapat didukung secara langsung. |
Melihat :
Kedua teknologi model LLM dan Prompt Word Prompt di AIGC sangat baru dan berkembang pesat. Teori, tutorial, alat, teknik, dan aspek lainnya sangat kurang. Tumpukan teknologi yang digunakan hampir tidak tumpang tindih dengan pengalaman pengembang arus utama :
Klasifikasi | Perkembangan arus utama saat ini | Proyek yang cepat | Kembangkan model, sempurnakan model |
---|---|---|---|
bahasa pengembangan | Java, .Net, Javscript, ABAP, dll. | Bahasa alami, Python | ular piton |
alat pengembangan | Sangat banyak dan dewasa | tidak ada | Dewasa |
Ambang batas perkembangan | lebih rendah dan matang | rendah tetapi sangat belum dewasa | sangat tinggi |
teknologi pengembangan | jelas dan mantap | Mudah untuk memulai tetapi sangat sulit untuk mencapai hasil yang stabil | kompleks dan bervariasi |
Teknik yang umum digunakan | Berorientasi objek, database, data besar | penyetelan cepat, pembelajaran dalam konteks, penyematan | Transformator, RLHF, Penyempurnaan, LoRA |
Dukungan sumber terbuka | kaya dan dewasa | Sangat membingungkan di level bawah | kaya tapi belum dewasa |
biaya pengembangan | Rendah | lebih tinggi | sangat tinggi |
Pengembang | Kaya | Sangat langka | sangat langka |
Mengembangkan model kolaboratif | Kembangkan sesuai dengan dokumen yang disampaikan oleh manajer produk | Satu orang atau tim minimalis dapat menangani semua operasi mulai dari persyaratan hingga pengiriman | Dikembangkan sesuai dengan arahan penelitian teoritis |
Saat ini, hampir semua perusahaan teknologi, perusahaan Internet, dan perusahaan data besar semuanya mengarah ke arah ini, namun perusahaan yang lebih tradisional masih berada dalam kebingungan. Bukan berarti perusahaan tradisional tidak membutuhkannya, namun karena: 1) mereka tidak memiliki cadangan bakat teknis, sehingga mereka tidak tahu apa yang harus dilakukan; 2) mereka tidak memiliki cadangan perangkat keras, dan mereka tidak memilikinya memiliki kemampuan untuk melakukannya; 3) Tingkat digitalisasi bisnis rendah, dan transformasi serta peningkatan AIGC memiliki siklus yang panjang dan hasil yang lambat.
Saat ini, terdapat terlalu banyak model komersial dan sumber terbuka di dalam dan luar negeri, dan perkembangannya sangat cepat. Namun, API dan objek data dari model tersebut berbeda. Akibatnya, ketika menghadapi model baru (atau bahkan a versi baru), kita harus membaca dokumen pengembangan dan Memodifikasi kode aplikasi Anda sendiri untuk beradaptasi. Saya yakin setiap pengembang aplikasi telah menguji banyak model dan pasti mengalaminya.
Faktanya, meskipun kemampuan model berbeda, mode untuk menyediakan kemampuan secara umum sama. Oleh karena itu, memiliki kerangka kerja yang dapat beradaptasi dengan sejumlah besar model API dan menyediakan mode panggilan terpadu telah menjadi kebutuhan mendesak bagi banyak pengembang.
Pertama-tama, bida tidak dimaksudkan untuk menggantikan langchain, namun penentuan posisi target dan konsep pengembangannya juga sangat berbeda:
Klasifikasi | rantailang | tawaran |
---|---|---|
kelompok sasaran | Perkembangan penuh mengarah pada AIGC | Pengembang yang mempunyai kebutuhan mendesak untuk menggabungkan AIGC dengan pengembangan aplikasi |
Dukungan model | Mendukung berbagai model untuk penerapan lokal atau jarak jauh | Hanya panggilan model yang menyediakan API Web yang didukung. Saat ini, sebagian besar model komersial menyediakannya. Model sumber terbuka juga dapat menyediakan API Web setelah diterapkan menggunakan kerangka kerja seperti FastChat. |
struktur rangka | Karena memberikan banyak kemampuan dan struktur yang sangat kompleks, pada Agustus 2023, kode inti memiliki lebih dari 1,700 file dan 150,000 baris kode, dan ambang batas pembelajarannya tinggi. | Ada lebih dari sepuluh kode inti dan sekitar 2.000 baris kode. Relatif mudah untuk mempelajari dan memodifikasi kode. |
Dukungan fungsi | Menyediakan cakupan penuh berbagai model, teknologi, dan bidang aplikasi sesuai arahan AIGC | Saat ini, ia menyediakan dukungan untuk Penyelesaian Obrolan, Penyelesaian, Penyematan, Panggilan Fungsi, dan fungsi multi-modal seperti suara dan gambar akan dirilis dalam waktu dekat. |
Mengingatkan | Templat prompt disediakan, tetapi prompt yang digunakan oleh fungsinya sendiri tertanam dalam kode, sehingga mempersulit proses debug dan modifikasi. | Templat Prompt disediakan. Saat ini, tidak ada fungsi bawaan untuk menggunakan Prompt. Jika digunakan di masa mendatang, mode pasca-pemuatan berbasis konfigurasi akan digunakan untuk memfasilitasi penyesuaian pengguna. |
Percakapan & Memori | Mendukung dan menyediakan berbagai metode manajemen memori | Dukungan, dukungan Persistensi percakapan (disimpan ke duckdb), Memori menyediakan kemampuan sesi pengarsipan terbatas, dan kemampuan lainnya dapat diperluas dengan kerangka ekstensi |
Fungsi & Plugin | Mendukung dan memberikan kemampuan ekspansi yang kaya, tetapi efek penggunaannya bergantung pada kemampuan model besar itu sendiri | Kompatibel dengan model besar menggunakan spesifikasi Panggilan Fungsi OpenAI |
Agen & Rantai | Mendukung dan memberikan kemampuan ekspansi yang kaya, tetapi efek penggunaannya bergantung pada kemampuan model besar itu sendiri | Jika tidak didukung, kami berencana membuka proyek lain untuk mengimplementasikannya, atau kami dapat memperluas dan mengembangkannya sendiri berdasarkan kerangka kerja saat ini. |
Fungsi lainnya | Mendukung banyak fungsi lainnya, seperti pemisahan dokumen (penyematan dilakukan setelah pemisahan, digunakan untuk mengimplementasikan chatpdf dan fungsi serupa lainnya) | Saat ini tidak ada fungsi lain. Jika ditambahkan, fungsi tersebut akan diimplementasikan dengan membuka proyek baru yang kompatibel. Saat ini, fungsi tersebut dapat diimplementasikan menggunakan kombinasi kemampuan yang disediakan oleh produk lain. |
Efisiensi operasional | Banyak pengembang melaporkan bahwa ini lebih lambat daripada memanggil API secara langsung, dan alasannya tidak diketahui. | Ini hanya merangkum proses panggilan dan menyatukan antarmuka panggilan, dan kinerjanya tidak berbeda dengan memanggil API secara langsung. |
Sebagai proyek sumber terbuka terkemuka di industri, langchain telah memberikan kontribusi besar dalam promosi model besar dan AGI. Kami juga telah menerapkannya dalam proyek ini, kami juga memanfaatkan banyak model dan idenya saat mengembangkan tawaran. Namun langchain ingin menjadi alat yang besar dan komprehensif, yang pasti menimbulkan banyak kekurangan. Artikel-artikel berikut memiliki pendapat serupa: Max Woolf - berbahasa Mandarin, Hacker News - berbahasa Mandarin.
Sebuah pepatah populer di kalangan masyarakat merangkumnya dengan sangat baik: langchain adalah buku teks yang semua orang akan pelajari, namun pada akhirnya akan dibuang.
Instal bida terbaru dari pip atau pip3
pip install -U bida
Kloning kode proyek dari github ke direktori lokal:
git clone https://github.com/pfzhou/bida.git
pip install -r requirements.txt
Ubah file di bawah direktori akar kode saat ini: Ekstensi ".env.template" menjadi file variabel lingkungan ".env" . Silakan konfigurasikan kunci model yang Anda lamar sesuai dengan instruksi dalam file.
Harap dicatat : File ini telah ditambahkan ke daftar abaikan dan tidak akan dikirim ke server git.
contoh1.Inisialisasi lingkungan.ipynb
Kode demonstrasi berikut akan menggunakan berbagai model yang didukung oleh bida. Silakan ubah dan ganti nilai **[model_type]** dalam kode dengan nama perusahaan model yang sesuai dengan model yang Anda beli untuk pengalaman:
# 更多信息参看bidamodels*.json中的model_type配置
# openai
llm = ChatLLM ( model_type = "openai" )
# baidu
llm = ChatLLM ( model_type = "baidu" )
# baidu third models(llama-2...)
llm = ChatLLM ( model_type = "baidu-third" )
# aliyun
llm = ChatLLM ( model_type = "aliyun" )
# minimax
llm = ChatLLM ( model_type = "minimax" )
# minimax ccp
llm = ChatLLM ( model_type = "minimax-ccp" )
# zhipu ai
llm = ChatLLM ( model_type = "chatglm2" )
# xunfei xinghuo
llm = ChatLLM ( model_type = "xfyun" )
# senstime
llm = ChatLLM ( model_type = "senstime" )
# baichuan ai
llm = ChatLLM ( model_type = "baichuan" )
# tencent ai
llm = ChatLLM ( model_type = "tencent" )
Mode obrolan: Penyelesaian Obrolan, mode interaksi LLM arus utama, bida mendukung manajemen sesi, persistensi, dan manajemen memori.
from bida import ChatLLM
llm = ChatLLM ( model_type = 'baidu' )
result = llm . chat ( "你好呀,请问你是谁?" )
print ( result )
from bida import ChatLLM
# stream调用
llm = ChatLLM ( model_type = "baidu" , stream_callback = ChatLLM . stream_callback_func )
result = llm . chat ( "你好呀,请问你是谁?" )
from bida import ChatLLM
llm = ChatLLM ( model_type = "baidu" , stream_callback = ChatLLM . stream_callback_func )
result = llm . chat ( "你是一个服务助理,请简洁回答我的问题。我的名字是老周。" )
result = llm . chat ( "我的名字是?" )
Untuk kode detail di atas dan contoh fungsional lainnya, silakan lihat Buku Catatan di bawah ini:
contoh2.1.Mode obrolan.ipynb
Bangun chatbot menggunakan gradien
Gradio adalah kerangka antarmuka pemrosesan bahasa alami yang sangat populer
bida + grario dapat membangun aplikasi yang dapat digunakan hanya dengan beberapa baris kode
import gradio as gr
from bida import ChatLLM
llm = ChatLLM ( model_type = 'openai' )
def predict ( message , history ):
answer = llm . chat ( message )
return answer
gr . ChatInterface ( predict ). launch ()
Untuk detailnya, lihat: demo chatbot bida+gradio
Mode penyelesaian: Penyelesaian atau Penyelesaian Teks, mode interaksi LLM generasi sebelumnya, hanya mendukung percakapan satu putaran, tidak menyimpan catatan obrolan, dan setiap panggilan merupakan komunikasi baru.
Harap diperhatikan: Dalam artikel OpenAI pada 6 Juli 2023, model ini dengan jelas menyatakan bahwa model ini akan dihapuskan secara bertahap. Model-model baru pada dasarnya tidak menyediakan fungsi yang relevan. Bahkan model yang didukung diperkirakan mengikuti OpenAI dan diharapkan akan dihapuskan secara bertahap pada tahun 2023 masa depan. .
from bida import TextLLM
llm = TextLLM ( model_type = "openai" )
result = llm . completion ( "你是一个服务助理,请简洁回答我的问题。我的名字是老周。" )
print ( result )
Untuk detail kode contoh, lihat:
contoh2.2.Mode penyelesaian.ipynb
Kata prompt Prompt adalah fungsi paling penting dalam model bahasa besar. Kata ini menumbangkan model pengembangan berorientasi objek tradisional dan mengubahnya menjadi: Proyek prompt . Kerangka kerja ini diimplementasikan menggunakan "Prompt Templete", yang mendukung fungsi seperti tag pengganti, mengatur kata prompt yang berbeda untuk beberapa model, dan penggantian otomatis saat model melakukan interaksi.
PromptTemplate_Text saat ini disediakan: mendukung penggunaan teks string untuk menghasilkan template Prompt, bida juga mendukung template kustom yang fleksibel, dan berencana menyediakan kemampuan untuk memuat template dari json dan database di masa mendatang.
Silakan lihat file berikut untuk kode contoh terperinci:
contoh2.3.Kata cepat cepat.ipynb
Petunjuk penting dalam kata-kata cepat
Secara umum, disarankan agar kata-kata cepat mengikuti struktur tiga paragraf: menetapkan peran, memperjelas tugas, dan memberikan konteks (informasi atau contoh terkait) .
Seri kursus Andrew Ng https://learn.deeplearning.ai/login, versi Mandarin, interpretasi
buku masak openai https://github.com/openai/openai-cookbook
Dokumentasi Microsoft Azure: Pengantar Tip Engineering, Teknologi Tip Engineering
Panduan Teknik Prompt paling populer di Github, versi Cina
Pemanggilan Fungsi adalah fungsi yang dirilis oleh OpenAI pada 13 Juni 2023. Kita semua tahu bahwa data yang dilatih oleh ChatGPT didasarkan pada sebelum tahun 2021. Jika Anda menanyakan beberapa pertanyaan terkait waktu nyata, kami tidak akan dapat menjawab Anda, dan berfungsi panggilan memungkinkan secara real-time Dimungkinkan untuk memperoleh data jaringan, seperti memeriksa prakiraan cuaca, memeriksa stok, merekomendasikan film terbaru, dll.
Teknologi penyematan adalah teknologi paling penting untuk menerapkan Pembelajaran dalam Konteks Cepat. Dibandingkan dengan pengambilan kata kunci sebelumnya, ini merupakan satu langkah maju.
Catatan : Penyematan data dari model yang berbeda tidak bersifat universal, sehingga model yang sama harus digunakan untuk penyematan pertanyaan pada saat pengambilan.
Nama model | Dimensi keluaran | Jumlah catatan batch | Batas token teks tunggal |
---|---|---|---|
OpenAI | 1536 | Tidak ada batasan | 8191 |
Baidu | 384 | 16 | 384 |
Ali | 1536 | 10 | 2048 |
Mini Maks | 1536 | Tidak ada batasan | 4096 |
AI spektrum kebijaksanaan | 1024 | Lajang | 512 |
iFlytek Spark | 1024 | Lajang | 256 |
Catatan: antarmuka penyematan bida mendukung pemrosesan batch. Jika batas pemrosesan batch model terlampaui, maka secara otomatis akan diproses dalam batch dan dikembalikan bersama. Jika konten satu bagian teks melebihi jumlah token yang dibatasi, bergantung pada logika model, beberapa akan melaporkan kesalahan dan beberapa akan memotongnya.
Untuk contoh detailnya, lihat: example2.6.Embeddingsembedding model.ipynb
├─bida # bida框架主目录
│ ├─core # bida框架核心代码
│ ├─functions # 自定义function文件
│ ├─ *.json # function定义
│ ├─ *.py # 对应的调用代码
│ ├─models # 接入模型文件
│ ├─ *.json # 模型配置定义:openai.json、baidu.json等
│ ├─ *_api.py # 模型接入代码:openai_api.py、baidu_api.py等
│ ├─ *_sdk.py # 模型sdk代码:baidu_sdk.py等
│ ├─prompts # 自定义prompt模板文件
│ ├─*.py # 框架其他代码文件
├─docs # 帮助文档
├─examples # 演示代码、notebook文件和相关数据文件
├─test # pytest测试代码
│ .env.template # .env的模板
│ LICENSE # MIT 授权文件
│ pytest.ini # pytest配置文件
│ README.md # 本说明文件
│ requirements.txt # 相关依赖包
Kami berharap dapat beradaptasi dengan lebih banyak model, dan menyambut pendapat Anda yang berharga untuk bersama-sama memberikan produk yang lebih baik kepada pengembang!