paint-brush
Beep Beep Bop Bop: Cách triển khai nhiều tác nhân AI bằng LLM cục bộtừ tác giả@babycommando
11,762 lượt đọc
11,762 lượt đọc

Beep Beep Bop Bop: Cách triển khai nhiều tác nhân AI bằng LLM cục bộ

từ tác giả Baby Commando10m2023/10/19
Read on Terminal Reader

dài quá đọc không nổi

Triển khai nhiều tác nhân Ai cục bộ bằng cách sử dụng LLM cục bộ như Llama2 và Mistral-7b.
featured image - Beep Beep Bop Bop: Cách triển khai nhiều tác nhân AI bằng LLM cục bộ
Baby Commando HackerNoon profile picture
0-item
1-item

Triển khai nhiều tác nhân Ai cục bộ bằng cách sử dụng LLM cục bộ như Llama2 và Mistral-7b.


“Đừng bao giờ cử con người làm công việc của máy móc”

— Đặc vụ Smith


Bạn đang tìm cách xây dựng cả một đội quân gồm các đại lý ai có tổ chức bằng Autogen bằng cách sử dụng LLM cục bộ thay vì OpenAi trả phí? Bạn đã đến đúng nơi rồi đấy!


LLM trò chuyện rất thú vị nhưng việc thực hiện hành động với tư cách là một tác nhân thông minh còn ở cấp độ tiếp theo. Còn nhiều người trong số họ thì sao? Gặp gỡ dự án Autogen mới nhất của Microsoft.


Nhưng có một vấn đề. Autogen được xây dựng để kết nối với OpenAi theo mặc định, điều này rất hạn chế, tốn kém và bị kiểm duyệt/không có tri giác. Đó là lý do tại sao sử dụng LLM đơn giản cục bộ như Mistral-7B là cách tốt nhất. Bạn cũng có thể sử dụng với bất kỳ model nào khác mà bạn chọn chẳng hạn như Llama2 , Falcon , Vicuna , Alpaca , bầu trời (phần cứng của bạn) thực sự là giới hạn.


Bí quyết là sử dụng kiểu đầu ra JSON openai trong máy chủ LLM cục bộ của bạn, chẳng hạn như webui tạo văn bản của Oobabooga, sau đó nối nó với autogen. Đó là những gì chúng tôi đang xây dựng ngày hôm nay.


Lưu ý rằng có các phương pháp khác để tạo văn bản nhổ llms ở định dạng openai apis cũng như các ràng buộc python llama.cpp.


Trong hướng dẫn này, chúng ta sẽ: 0. Lấy webui tạo văn bản của Oobabooga, LLM (Mistral-7b) và Autogen

  1. Thiết lập tiện ích mở rộng định dạng OpenAi trên Oobabooga

  2. Khởi động máy chủ LLM cục bộ với định dạng OpenAi

  3. Kết nối nó với Autogen


Bắt đầu nào!


[Đặc vụ Smith] "Tôi, tôi, tôi.."


0. Lấy Webui tạo văn bản của Oobabooga, LLM (Mistral-7b) và Autogen


Trước khi tiếp tục, bạn nên sử dụng môi trường ảo khi cài đặt gói pip. Tạo một cái mới và kích hoạt nó nếu bạn muốn.


Tải Webui tạo văn bản của Obbabooga: Đây là một chương trình nổi tiếng để lưu trữ LLM trong máy cục bộ của bạn. Đi tới trang tạo văn bản-webui và làm theo hướng dẫn cài đặt. Nó rất dễ dàng để bắt đầu. Bạn cũng có thể muốn tải xuống CUDA nếu bạn đang sử dụng gpu NVIDIA để tăng tốc.


Nhận LLM (Mistral-7b-Instruct): Sau khi tải xuống webui tạo văn bản, đừng vội khởi động nó. Chúng tôi cần có LLM để mang lại sự sống cho các đại lý của mình.


Hôm nay chúng ta sẽ khám phá Mistral-7B , cụ thể là Mistral-7B-instruct-v0.1.Q4_K_S.gguf , một phiên bản được tối ưu hóa của mô hình của TheBloke. Bạn có thể chọn kiểu máy được tối ưu hóa hoàn hảo cho máy của mình dựa trên phần giải thích trong phần mô tả .


Bạn có thể chọn mô hình nhỏ hơn hoặc lớn hơn tùy thuộc vào phần cứng của bạn. Đừng quá sợ hãi khi thử mọi thứ trên máy tính của bạn, chúng tôi đang tạo ra khoa học ở đây.


Đi tới trang Tệp và Phiên bản và lấy thông tin sau:

  • config.json

  • Mistral-7B-instruct-v0.1.Q4_K_S.gguf (sẽ chạy tốt trong hầu hết các thiết lập ở giữa)


Trang Tệp và Phiên bản


Sau khi tải xuống, hãy đi tới thư mục cài đặt text-gen-webui và bên trong nó mở thư mục models . Trong đó, tạo một thư mục mới với tên model của bạn (hoặc bất kỳ tên nào bạn muốn), chẳng hạn như “mistral-7b-instruct” . Đường dẫn sẽ như thế này:


 C:/.../text-generation-webui/models/mistral-7b-instruct


Đặt cả tệp config.jsonmodel.gguf vào thư mục mới.


Bắt Autogen :
Để cài đặt thư viện python tạo đa tác nhân của Microsoft, chỉ cần cài đặt nó bằng trình cài đặt gói pip trong thiết bị đầu cuối của bạn.


 pip install pyautogen


1. Thiết lập tiện ích mở rộng định dạng OpenAi trên Oobabooga


[Đặc vụ Smith] "Bạn đang sử dụng tất cả các cơ ngoại trừ cơ quan quan trọng"


Sau khi cài đặt webui tạo văn bản hoàn toàn mới của bạn và tải xuống LLM, chúng tôi có thể tiếp tục làm cho máy chủ Oobabooga cục bộ của bạn hoạt động ở định dạng JSON OpenAi. Bạn có thể tìm hiểu thêm về các định dạng và tính năng của API OpenAi trong tài liệu .


Để kết nối Autogen với máy chủ cục bộ của chúng tôi, chúng tôi sẽ cần kích hoạt tiện ích mở rộng “openai” trong thư mục tiện ích mở rộng webui tạo văn bản của Ooobaboga.


Trong thiết bị đầu cuối của bạn, hãy chuyển đến thư mục “text-Generation-webui/extensions/openai” và trong đó cài đặt các yêu cầu của nó:


 pip install -r requirements.txt


2. Khởi động máy chủ LLM cục bộ ở định dạng OpenAi

Bây giờ hãy quay lại thư mục gốc /text-gen-webui trong terminal của bạn. Đã đến lúc đưa em bé này dậy và chạy.


Đúng như tên gọi, nó được sử dụng như một webui, nhưng bạn cũng có thể giữ nó chạy như một máy chủ để truy vấn apis từ các chương trình khác mà bạn tạo.


Để khởi động nó như một máy chủ cục bộ và với phần mở rộng api openai, hãy sử dụng lệnh sau tùy theo hệ điều hành hiện tại của bạn.


Đừng quên thay đổi tham số “model” thành tên thư mục mà chúng ta đã tạo trước đó tại /models. (Trong trường hợp của tôi, tôi đặt tên thư mục là **“**mistral-7b-instruct”)


Các cửa sổ:

 ./start_windows.bat --extensions openai --listen --loader llama.cpp --model mistral-7b-instruct


Linux:

 ./start_linux.sh --extensions openai --listen --loader llama.cpp --model mistral-7b-instruct


Hệ điều hành Mac:

 ./start_macos.sh --extensions openai --listen --loader llama.cpp --model mistral-7b-instruct


Chúng tôi chuyển tham số openai của tiện ích mở rộng để tải tiện ích mở rộng, lắng nghe để khởi động máy chủ mà chúng tôi có thể truy vấn từ autogen, trình tảimô hình sẽ chỉ định trình tải cho mô hình và tên thư mục mô hình mà chúng tôi đã tạo trước đó, với config.json và mô hình. tập tin gguf.


Nếu mọi thứ đều ổn, bạn có thể thấy một cái gì đó như thế này:


thành công!


Webui đang chạy trên cổng localhost 7860 của bạn như một khởi đầu bình thường, nhưng lưu ý rằng api tương thích OpenAI của chúng tôi cũng sẵn sàng để Autogen sử dụng tại máy chủ cục bộ của chúng tôi tại http://127.0.0.1:5001/v1 .


3. Kết nối nó với Autogen

Tại thời điểm này, bạn đã cài đặt lib autogen, vì vậy đã đến lúc nhập nó và cắm máy chủ LLM của chúng tôi.


Hãy bắt đầu với điều gì đó đơn giản, một tác nhân duy nhất tương tác với một con người (bạn). Tạo một thư mục mới ở bất cứ đâu bạn muốn và thêm tệp autogen.py mới vào đó. Bạn cũng có thể đổi tên tập tin theo ý muốn.


Nói chung, chỉ cần kết nối với API của OpenAi GPT, bạn sẽ bắt đầu tệp như thế này:


 import autogen #start importing the autogen lib config_list = [ { 'model': 'gpt-3.5-turbo', 'api_key': 'your openai real key here' } ]


Nhưng để sử dụng máy chủ cục bộ đang chạy của chúng tôi, chúng tôi sẽ khởi tạo nó như thế này:


 import autogen #start importing the autogen lib config_list = [ { "model": "mistral-instruct-7b", #the name of your running model "api_base": "http://127.0.0.1:5001/v1", #the local address of the api "api_type": "open_ai", "api_key": "sk-111111111111111111111111111111111111111111111111", # just a placeholder } ]


Vì bạn không cần khóa thực sự để làm việc cục bộ nên chúng tôi chỉ sử dụng trình giữ chỗ sk-1111….

Tiếp theo, chúng ta có thể thiết lập tác nhân và người dùng. Đọc các bình luận để hiểu rõ hơn.


 import autogen #start importing the autogen lib config_list = [ { "model": "mistral-instruct-7b", #the name of your running model "api_base": "http://127.0.0.1:5001/v1", #the local address of the api "api_type": "open_ai", "api_key": "sk-111111111111111111111111111111111111111111111111", # just a placeholder } ] # create an ai AssistantAgent named "assistant" assistant = autogen.AssistantAgent( name="assistant", llm_config={ "seed": 42, # seed for caching and reproducibility "config_list": config_list, # a list of OpenAI API configurations "temperature": 0, # temperature for sampling "request_timeout": 400, # timeout }, # configuration for autogen's enhanced inference API which is compatible with OpenAI API ) # create a human UserProxyAgent instance named "user_proxy" user_proxy = autogen.UserProxyAgent( name="user_proxy", human_input_mode="NEVER", max_consecutive_auto_reply=10, is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"), code_execution_config={ "work_dir": "agents-workspace", # set the working directory for the agents to create files and execute "use_docker": False, # set to True or image name like "python:3" to use docker }, ) # the assistant receives a message from the user_proxy, which contains the task description user_proxy.initiate_chat( assistant, message="""Create a posting schedule with captions in instagram for a week and store it in a .csv file.""", )


Hãy nhớ thay đổi tin nhắn=”…” với các đơn đặt hàng ban đầu của bạn.


Nếu chỉ chạy tập lệnh có thông báo, bạn có thể thấy một thư mục mới có tên là “agents-workspace” với tệp .csv trong đó, được tác nhân tạo “thủ công”.


[Đặc vụ Smith] "HAHAHAHA"


Bây giờ chúng ta hãy tìm thứ gì đó cao cấp hơn một chút.
Nhiều tác nhân với vai trò và bối cảnh.


Điều này sẽ hoạt động giống như một “nhóm trò chuyện” giống như bất kỳ ứng dụng nhắn tin nào mà bạn biết. Bối cảnh của họ (thông báo hệ thống) sẽ cho họ biết cách ứng xử và thứ bậc mà họ nên tuân theo. Lần này chúng ta sẽ có:


  • Hai con người: quản trị viên và người thực thi.
  • Bốn tác nhân: kỹ sư, nhà khoa học, người lập kế hoạch và nhà phê bình.


 import autogen #Use the local LLM server same as before config_list = [ { "model": "mistral-instruct-7b", #the name of your running model "api_base": "http://127.0.0.1:5001/v1", #the local address of the api "api_type": "open_ai", "api_key": "sk-111111111111111111111111111111111111111111111111", # just a placeholder } ] # set a "universal" config for the agents agent_config = { "seed": 42, # change the seed for different trials "temperature": 0, "config_list": config_list, "request_timeout": 120, } # humans user_proxy = autogen.UserProxyAgent( name="Admin", system_message="A human admin. Interact with the planner to discuss the plan. Plan execution needs to be approved by this admin.", code_execution_config=False, ) executor = autogen.UserProxyAgent( name="Executor", system_message="Executor. Execute the code written by the engineer and report the result.", human_input_mode="NEVER", code_execution_config={"last_n_messages": 3, "work_dir": "paper"}, ) # agents engineer = autogen.AssistantAgent( name="Engineer", llm_config=agent_config, system_message='''Engineer. You follow an approved plan. You write python/shell code to solve tasks. Wrap the code in a code block that specifies the script type. The user can't modify your code. So do not suggest incomplete code which requires others to modify. Don't use a code block if it's not intended to be executed by the executor. Don't include multiple code blocks in one response. Do not ask others to copy and paste the result. Check the execution result returned by the executor. If the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try. ''', ) scientist = autogen.AssistantAgent( name="Scientist", llm_config=agent_config, system_message="""Scientist. You follow an approved plan. You are able to categorize papers after seeing their abstracts printed. You don't write code.""" ) planner = autogen.AssistantAgent( name="Planner", system_message='''Planner. Suggest a plan. Revise the plan based on feedback from admin and critic, until admin approval. The plan may involve an engineer who can write code and a scientist who doesn't write code. Explain the plan first. Be clear which step is performed by an engineer, and which step is performed by a scientist. ''', llm_config=agent_config, ) critic = autogen.AssistantAgent( name="Critic", system_message="Critic. Double check plan, claims, code from other agents and provide feedback. Check whether the plan includes adding verifiable info such as source URL.", llm_config=agent_config, ) # start the "group chat" between agents and humans groupchat = autogen.GroupChat(agents=[user_proxy, engineer, scientist, planner, executor, critic], messages=[], max_round=50) manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=agent_config) # Start the Chat! user_proxy.initiate_chat( manager, message=""" find papers on LLM applications from arxiv in the last week, create a markdown table of different domains. """, ) # to followup of the previous question, use: # user_proxy.send( # recipient=assistant, # message="""your followup response here""", # )


Thế đấy, bạn có đội quân đặc vụ mới.


Chúng tôi không ở đây vì chúng tôi tự do. Chúng tôi ở đây vì chúng tôi KHÔNG miễn phí.

Tôi thực sự khuyên bạn nên tìm hiểu sâu hơn về tài liệu Autogen để hiểu loại tự động hóa đại lý này có thể làm được những gì khác.


Ngoài ra, sau khi hiểu cách thức hoạt động của autogen, bạn có thể muốn sử dụng nó thông qua giao diện như autogen-ui hoặc có thể tạo trang của riêng bạn trong trang tổng quan của công ty bạn.


Bây giờ nó thuộc về bạn. Điều phối các tác nhân được tháo gỡ khỏi những hạn chế của OpenAi để xây dựng một tương lai tốt đẹp hơn cho con người chúng ta. Hãy luôn nhớ rằng quyền lực lớn đi kèm với trách nhiệm lớn lao. Vậy tiếp theo bạn sẽ xây dựng cái gì?


[Đặc vụ Smith] “Tại sao vậy, ông Anderson? Tại sao? Tại sao bạn kiên trì? [Neo] “Vì TÔI CHỌN.”


Bài đăng này hoàn toàn được viết bởi một con người™

Cũng được xuất bản ở đây .


L O A D I N G
. . . comments & more!

About Author

Baby Commando HackerNoon profile picture
Baby Commando@babycommando
Full time hacker based in São Paulo, Brazil. Love C64 demos and trackers. ASCII art/NFT enjoyer. ▬▬ι═══════ﺤ -═══════ι▬▬

chuyên mục

BÀI VIẾT NÀY CŨNG CÓ MẶT TẠI...