中文 | Bahasa Inggris
Qwen-Agent adalah kerangka kerja untuk mengembangkan aplikasi LLM berdasarkan instruksi berikut, penggunaan alat, perencanaan, dan kemampuan memori Qwen. Itu juga dilengkapi dengan contoh aplikasi seperti Browser Assistant, Code Interpreter, dan Custom Assistant.
18 Sep 2024: Menambahkan Demo Qwen2.5-Math untuk menampilkan kemampuan Penalaran Terintegrasi Alat dari Qwen2.5-Math. Catatan: Pelaksana python tidak di-sandbox dan dimaksudkan untuk pengujian lokal saja, bukan untuk penggunaan produksi.
Instal versi stabil dari PyPI:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# Atau gunakan `pip install -U qwen-agent` untuk persyaratan minimal.# Persyaratan opsional, yang ditentukan dalam tanda kurung ganda, adalah:# [gui ] untuk dukungan GUI berbasis Gradio;# [rag] untuk dukungan RAG;# [code_interpreter] untuk dukungan Code Interpreter;# [python_executor] untuk Penalaran Terintegrasi Alat dengan Qwen2.5-Math.
Alternatifnya, Anda dapat menginstal versi pengembangan terbaru dari sumbernya:
git clone https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# Atau `pip install -e ./` untuk persyaratan minimal.
Anda dapat menggunakan layanan model yang disediakan oleh DashScope Alibaba Cloud, atau menyebarkan dan menggunakan layanan model Anda sendiri menggunakan model Qwen sumber terbuka.
Jika Anda memilih untuk menggunakan layanan model yang ditawarkan oleh DashScope, pastikan Anda menyetel variabel lingkungan DASHSCOPE_API_KEY
ke kunci API DashScope unik Anda.
Alternatifnya, jika Anda lebih suka menerapkan dan menggunakan layanan model Anda sendiri, ikuti petunjuk yang diberikan dalam README Qwen2 untuk menerapkan layanan API yang kompatibel dengan OpenAI. Secara khusus, lihat bagian vLLM untuk penerapan GPU throughput tinggi atau bagian Ollama untuk penerapan CPU (+GPU) lokal.
Qwen-Agent menawarkan komponen atom, seperti LLM (yang mewarisi dari class BaseChatModel
dan dilengkapi dengan pemanggilan fungsi) dan Tools (yang mewarisi dari class BaseTool
), bersama dengan komponen tingkat tinggi seperti Agents (berasal dari class Agent
).
Contoh berikut mengilustrasikan proses pembuatan agen yang mampu membaca file PDF dan memanfaatkan alat, serta menggabungkan alat khusus:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, register_tool# Langkah 1 (Opsional): Tambahkan alat khusus bernama `my_image_gen`.@register_tool('my_image_gen')class MyImageGen(BaseTool):# `Description` memberi tahu agen fungsionalitas alat ini.description = 'Layanan pengecatan AI (pembuatan gambar), masukkan deskripsi teks, dan kembalikan URL gambar yang diambil berdasarkan informasi teks.'# `Parameter` memberi tahu agen input apa parameter yang dimiliki alat.parameters = [{'name': 'prompt','type': 'string','description': 'Deskripsi detail konten gambar yang diinginkan, dalam bahasa Inggris','wajib': True}]def call(self, params: str, **kwargs) -> str:# `params` adalah argumen yang dihasilkan oleh agen LLM.prompt = json5.loads(params)['prompt']prompt = urllib.parse.quote( cepat)kembalikan json5.dumps( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# Langkah 2: Konfigurasikan LLM yang Anda gunakan.llm_cfg = {# Gunakan layanan model yang disediakan oleh DashScope:'model': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# Ini akan menggunakan variabel lingkungan `DASHSCOPE_API_KEY' jika 'api_key' tidak disetel di sini.# Gunakan layanan model yang kompatibel dengan OpenAI API, seperti vLLM atau Ollama:# 'model': 'Qwen2-7B-Chat',# 'model_server': 'http://localhost:8000/v1', # base_url, juga dikenal sebagai api_base# 'api_key': 'EMPTY',# (Opsional) hyperparameter LLM untuk pembuatan:'generate_cfg': {'top_p': 0.8} }# Langkah 3: Buat agen. Di sini kita menggunakan agen `Asisten` sebagai contoh, yang mampu menggunakan alat dan membaca file.system_instruction = '''Anda adalah asisten yang sangat membantu.Setelah menerima permintaan pengguna, Anda harus:- terlebih dahulu menggambar gambar dan mendapatkan url gambar,- lalu jalankan kode `request.get(image_url)` untuk mendownload gambar,- dan terakhir pilih operasi gambar dari dokumen yang diberikan untuk memproses gambar. Harap tampilkan gambar menggunakan `plt.show()`.' ''tools = ['my_image_gen', 'code_interpreter'] # `code_interpreter` adalah alat bawaan untuk mengeksekusi code.files = ['./examples/resource/doc.pdf'] # Berikan bot file PDF ke read.bot = Assistant(llm=llm_cfg,system_message=system_instruction,function_list=tools,files=files)# Langkah 4: Jalankan agen sebagai chatbot.messages = [] # Ini menyimpan riwayat obrolan.sementara Benar:# Misalnya , masukkan kueri "gambar seekor anjing dan putar 90 derajat".query = input('user query: ')# Tambahkan kueri pengguna ke riwayat obrolan.messages.append({'role': 'user', 'content ': query})response = []untuk respon di bot.run(messages=messages):# Streaming output.print('bot respon:')pprint.pprint(response, indent=2)# Tambahkan respon bot ke riwayat obrolan.pesan.perpanjang(respons)
Selain menggunakan implementasi agen bawaan seperti class Assistant
, Anda juga dapat mengembangkan implementasi agen Anda sendiri dengan mewarisi dari class Agent
. Silakan merujuk ke direktori contoh untuk contoh penggunaan lebih lanjut.
Ya. Kelas LLM menyediakan pemanggilan fungsi. Selain itu, beberapa kelas Agen juga dibangun berdasarkan kemampuan pemanggilan fungsi, misalnya FnCallAgent dan ReActChat.
Kami telah merilis solusi RAG yang cepat, serta agen yang mahal namun kompetitif, untuk menjawab pertanyaan pada dokumen yang sangat panjang. Mereka telah berhasil mengungguli model konteks panjang asli pada dua tolok ukur yang menantang sekaligus lebih efisien, dan bekerja dengan sempurna dalam uji tekanan "jarum di tumpukan jerami" jarum tunggal yang melibatkan konteks token 1M. Lihat blog untuk detail teknis.
BrowserQwen adalah asisten browser yang dibangun di atas Qwen-Agent. Silakan merujuk ke dokumentasinya untuk detailnya.
Penerjemah kode tidak di-sandbox, dan mengeksekusi kode di lingkungan Anda sendiri. Harap jangan meminta Qwen untuk melakukan tugas berbahaya, dan jangan langsung menggunakan penerjemah kode untuk tujuan produksi.