Chóe giữa khe đáxem ngoại hạng anh, lửa giữa thạch, thân giữa mộng.
Cuối tuần không cuộnxem ngoại hạng anh, bận rộn trộm lấy nhàn, viết chút kỹ thuật. 。
Cách giao tiếp hiệu quả với mô hình lớn là một môn nghệ thuật.
sử dụng khoa học để phá vỡ ma thuật
Vì nội dung khá dàixem ngoại hạng anh, tôi dự định sẽ chia bài viết thành 2 đến 3 phần khác nhau. Trong phần này, chúng ta sẽ cùng tìm hiểu về các khái niệm cơ bản trong APE và DSPy, đồng thời minh họa cách DSPy hoạt động thông qua một ví dụ cụ thể về chương trình. Điều này sẽ giúp bạn có được cái nhìn trực quan rõ ràng hơn. Ở những phần tiếp theo, tôi sẽ phân tích sự khác biệt giữa DSPy và APE, rút ra những bài học từ cách tiếp cận kỹ thuật tương tự cũng như thảo luận về một số vấn đề tiềm ẩn có thể xảy ra.
Đối với mỗi vai trò khác nhauxem ngoại hạng anh, ý nghĩa của từ khóa "prompt" có thể sẽ mang một sắc thái riêng. Để dễ dàng thảo luận, chúng ta có thể chia prompt thành hai nhóm chính: Thứ nhất là các prompt mang tính chất gợi ý sáng tạo, thường được sử dụng trong lĩnh vực nghệ thuật hay viết lách. Những loại này thường hướng dẫn người dùng phát triển ý tưởng theo cách tự do và mở, chẳng hạn như “Tạo ra một cảnh hoàng hôn đầy cảm hứng trên một bãi biển hoang vắng” – điều này khuyến khích người thực hiện phóng khoáng trong việc tưởng tượng và sáng tạo. Thứ hai là các prompt mang tính kỹ thuật hoặc chuyên môn, thường xuất hiện trong các ngành công nghệ, lập trình hoặc nghiên cứu. Với nhóm này, prompt có xu hướng cụ thể và rõ ràng hơn, ví dụ như “Hãy nhập một câu lệnh để tìm kiếm tất cả các tệp văn bản đã chỉnh sửa trong tháng này”. Điều này đòi hỏi người sử dụng phải hiểu rõ cấu trúc và ngữ pháp của hệ thống mà họ đang làm việc. Hai nhóm này không chỉ đơn thuần là phân biệt về mục đích sử dụng mà còn phản ánh sự đa dạng trong cách tiếp cận và ứng dụng của prompt trong nhiều lĩnh vực khác nhau.
Các gợi ý trò chuyện thông thường là dành cho những người dùng phổ thông. Một người sử dụng sản phẩm mô hình lớn thông qua hình thức trò chuyện cần phải sử dụng ngôn ngữ rõ ràng để mô tả vấn đề của mìnhbắn cá săn thưởng, từ đó mới có thể nhận được câu trả lời như mong đợi. Ví dụ, nếu bạn muốn mô hình lớn giúp viết một bài văn cho học sinh trung học cơ sở, thì lúc này bạn cần phải truyền đạt đầy đủ và rõ ràng tất cả các thông tin liên quan đến bài văn: bối cảnh của bài viết, ý nghĩa mà bạn mong muốn, phong cách diễn đạt, thậm chí là cảnh cụ thể mà bạn muốn miêu tả, cũng như bất kỳ yêu cầu nào khác về việc viết bài. Điều quan trọng là phải đảm bảo rằng mọi thông tin đều được cung cấp một cách logic và dễ hiểu để mô hình lớn có thể đưa ra kết quả tốt nhất.
Nói cách kháccá cược bóng đá, câu hỏi gợi ý chat thông thường là do người dùng tự viết, chỉ cần mô tả rõ nhu cầu cụ thể cho nhiệm vụ hiện tại là được.
Việc phát triển hệ thống lại mang một cách tiếp cận khácbắn cá săn thưởng, hướng đến các nhà phát triển ứng dụng AI (cụ thể là các kỹ sư). Trong quá trình viết mã và xây dựng hệ thống AI, các kỹ sư thường phải phân tích nhiệm vụ của người dùng thành các bước nhỏ hơn. Điều này dẫn đến việc họ cần tương tác với mô hình lớn ở nhiều giai đoạn khác nhau, từ đó sinh ra công việc viết câu lệnh gợi ý (prompt). Ví dụ như phân loại ý định của câu truy vấn người dùng, trích xuất thực thể, mở rộng từ khóa tìm kiếm, tất cả đều là những tình huống phổ biến trong quá trình phát triển ứng dụng AI.
Rõ ràngxem ngoại hạng anh, các gợi ý từ ngữ cho việc phát triển hệ thống khác biệt rất nhiều so với những gợi ý thông thường trong trò chuyện. Chúng được viết bởi các kỹ sư và cần phải tính đến mọi khả năng nhập liệu khác nhau mà người dùng có thể thực hiện trong một tình huống cụ thể. Do đó, các gợi ý từ ngữ cho hệ thống phát triển yêu cầu một thiết kế mang tính hệ thống cao hơn, phải xem xét đủ các trường hợp ngoại lệ và đảm bảo tỷ lệ chính xác ổn định. Mức độ quan trọng của nó tương đương với việc viết mã lập trình.
Chúng ta sẽ thảo luận về APE tiếp theobắn cá săn thưởng, rõ ràng là nó nhắm vào loại thứ hai trong hai loại câu hỏi gợi ý này — câu hỏi gợi ý phát triển hệ thống.
Trước khi phân tích cụ thể chương trình DSPybắn cá săn thưởng, chúng ta hãy làm rõ một số khái niệm cơ bản về APE và DSPy.
Vậy APE là gì? Nói đơn giảnxem ngoại hạng anh, đó là sử dụng LLM để tự động giúp chúng ta tạo ra các câu hỏi gợi ý.
Vậy câu hỏi đặt ra làxem ngoại hạng anh, làm sao chúng ta có thể biết được rằng các từ khóa do LLM tạo ra có tốt hay không? Nó có đáp ứng đúng những yêu cầu của chúng ta hay không? Do đó, để sử dụng APE, chúng ta cần phải xác định một tiêu chí rõ ràng. Điều quan trọng là chúng ta phải hiểu rằng việc đánh giá chất lượng từ khóa không chỉ dừng lại ở việc kiểm tra xem nó có hợp lý hay không mà còn cần xem xét liệu nó có thực sự liên quan đến mục tiêu cụ thể mà chúng ta đã đề ra hay không. Một số yếu tố cần cân nhắc bao gồm tính chính xác, độ bao quát và khả năng dẫn dắt người dùng đến đúng kết quả mong muốn. Chỉ khi nào có một tiêu chuẩn rõ ràng, chúng ta mới có thể đo lường hiệu quả và tối ưu hóa quá trình tạo từ khóa, từ đó nâng cao trải nghiệm người dùng cũng như đạt được kết quả mong muốn trong mọi hoạt động. metric Dựa trên chỉ số nàybắn cá săn thưởng, chúng ta có thể tự động đánh giá hiệu suất của các cụm từ gợi ý hiện tại đã được tạo ra đến mức nào. Tất nhiên, việc xác định chỉ số không phải là một nhiệm vụ đơn giản, chúng ta sẽ thảo luận về vấn đề này sau.
Vậy với metric nàybắn cá săn thưởng, cụ thể nó sẽ được đánh giá trên tập dữ liệu nào? Để làm rõ vấn đề này, chúng ta cần cung cấp thêm một cái gì đó quan trọng. Chẳng hạn, liệu metric đó có được thiết kế để đo lường hiệu suất trên các tập dữ liệu lớn hay nhỏ? Liệu nó có phù hợp với những loại dữ liệu cụ thể như văn bản, hình ảnh hay âm thanh hay không? Việc hiểu rõ hơn về tập dữ liệu mà metric hoạt động sẽ giúp chúng ta đánh giá chính xác hơn về độ tin cậy và khả năng áp dụng của nó trong thực tế. Do đó, câu trả lời cho câu hỏi này đòi hỏi chúng ta phải bổ sung thêm thông tin chi tiết, chẳng hạn như ví dụ cụ thể hoặc hướng dẫn cụ thể để mọi người có thể dễ dàng kiểm tra và so sánh kết quả. Tập dữ liệu đã được đánh dấu (labelled dataset) Tất nhiênbắn cá săn thưởng, trong thực tế sử dụng, tập dữ liệu này sẽ được chia thành tập huấn luyện, tập xác minh và tập kiểm tra.
APE là một quá trình không ngừng cải tiến. Mỗi khi tạo ra phiên bản mới của một promptxem ngoại hạng anh, nó sẽ dựa trên các chỉ số (metric) để đánh giá trên tập dữ liệu và thu được một điểm số (score). Miễn là phiên bản prompt mới đạt được điểm số cao hơn so với phiên bản cũ, quy trình APE có thể tiếp tục lặp lại quá trình này, từ đó cho ra đời những prompt ngày càng tốt hơn. Quá trình này giống như một nghệ sĩ không ngừng rèn luyện kỹ năng của mình: mỗi lần họ thực hiện một tác phẩm mới, họ luôn tự đặt ra câu hỏi liệu điều đó có tốt hơn phiên bản trước hay không. Và nếu có, họ sẽ tiếp tục thử thách bản thân để nâng cao khả năng. Chính sự kiên nhẫn và khao khát học hỏi này đã biến APE thành một công cụ mạnh mẽ trong việc tối ưu hóa prompt.
đứng trên chân trái và bước bằng chân phải Câu hỏi gợi ý ban đầu (initial prompt) bắn cá săn thưởng, làm điểm xuất phát cho việc tối ưu hóa và lặp lại.
Ngoài raxem ngoại hạng anh, vì trong APE, câu hỏi gợi ý được tạo ra bởi LLM, vì vậy chúng ta cũng cần mộtCâu hỏi gợi ý được sử dụng để tạo ra câu hỏi gợi ý mớicá cược bóng đá, được gọi là meta-prompt Meta-prompt là một khái niệm rất quan trọ
DSPy là một khung công tác mã nguồn mởcá cược bóng đá, bao gồm hầu hết các yếu tố của dự án APE. Tuy nhiên, DSPy không chỉ giới hạn ở việc tái hiện APE; sự khác biệt giữa hai hệ thống này sẽ được và giải thích chi tiết hơn sau khi chúng ta phân tích quá trình thực thi của DSPy, trong phần tiếp theo của bài viết.
Trước khi đi sâu vào phân tích cụ thể về DSPyxem ngoại hạng anh, hãy cùng điểm qua một số khái niệm cốt lõi mà DSPy đã tóm lược lại trong cách tiếp cận của mình. Những khái niệm này không chỉ giúp chúng ta hiểu rõ hơn về cấu trúc tổng thể mà còn tạo nền tảng vững chắc cho việc áp dụng thực tế sau này.
Trong phần nàycá cược bóng đá, chúng ta sẽ cùng tìm hiểu cách một chương trình cụ thể của DSPy hoạt động. Chương trình mà chúng ta sẽ phân tích đến từ tài liệu hướng dẫn chính thức của DSPy: https://dspy.ai/tutorials/rag/ Bạn có thể thấy cách một chương trình RAG điển hình được tối ưu hóa bằng cách sử dụ Chúng ta sẽ lấy chương trình RAG này làm ví dụ và phân tích từng bước chính cũng như nguyên lý hoạt động đằng sau nó. Chương trình RAG này thực sự là một minh chứng cho cách mà các công nghệ hiện đại có thể kết hợp với nhau để tạo ra một hệ thống hiệu quả. Đầu tiênxem ngoại hạng anh, nó tải dữ liệu từ nguồn, tiếp theo là xử lý thông tin đó để chuẩn bị cho việc truy vấn. Sau đó, chương trình sẽ tìm kiếm câu trả lời dựa trên những gì đã được xử lý trước đó và cuối cùng trả về kết quả. Các bước này không chỉ đơn giản là các thao tác kỹ thuật mà còn phản ánh sự phức tạp trong việc xây dựng một hệ thống trí tuệ nhân tạo. Mỗi bước đều cần được tối ưu hóa cẩn thận để đảm bảo rằng hệ thống có thể hoạt động mượt mà và mang lại kết quả chính xác nhất có thể. Chính vì vậy, việc hiểu rõ cơ chế hoạt động của từng phần trong chương trình là vô cùng quan trọng đối với bất kỳ ai muốn nghiên cứu sâu hơn về lĩnh vực này.
Mã khung chương trình như sau:
# Phần 1: Khởi tạo LLMlm
=
dspy
.
LM
(
'openai/gpt-4o-mini'
)
dspy
.
configure
(
lm
=
lm
)
# Phần 2: Khởi tạo tập dữ liệuwith
open
(
'ragqa_arena_tech_500.json'
)
as
f
:
data
=
ujson
.
load
(
f
)
data
=
[
dspy
.
Example
(
**
d
).
with_inputs
(
'question'
)
for
d
in
data
]
random
.
shuffle
(
data
)
trainset
,
valset
,
devset
,
testset
=
data
[:
50
],
data
[
50
:
150
],
data
[
150
:
300
],
data
[
300
:
500
]
# Phần 3: Khởi tạo Metric và Evaluatemetric
=
SemanticF1
()
evaluate
=
dspy
.
Evaluate
(
devset
=
testset
,
metric
=
metric
,
num_threads
=
8
,
display_progress
=
True
,
display_table
=
2
)
# Phần 4: Khởi tạo mô-đun RAG # Mã nguồn cho việc tìm kiếmbắn cá săn thưởng, ở đây được lược bỏ Chúng ta sẽ bắt đầu bằng cách thiết lập các thành phần cốt lõi của mô-đun RAG. Việc tìm kiếm tài liệu phù hợp từ cơ sở dữ liệu lớn là một bước quan trọng trong quá trình này. Đầu tiên, hãy tưởng tượng rằng chúng ta đang xây dựng một hệ thống tìm kiếm thông minh có khả năng trả lời bất kỳ câu hỏi nào mà người dùng đặt ra. Để thực hiện điều này, trước tiên cần khởi tạo một đối tượng mô-đun RAG với các tham số cụ thể. Những tham số này bao gồm các thông tin về vector embeddings, nơi lưu trữ dữ liệu và các mô hình ngôn ngữ được sử dụng để tinh chỉnh kết quả tìm kiếm. Tiếp theo, chúng ta cần xác định chiến lược tìm kiếm phù hợp. Điều này có thể bao gồm việc sử dụng các thuật toán tối ưu như FAISS hoặc ElasticSearch để tăng tốc độ tìm kiếm. Mỗi thuật toán đều có ưu nhược điểm riêng, do đó cần lựa chọn kỹ lưỡng dựa trên yêu cầu cụ thể của hệ thống. Sau khi đã có cấu hình hoàn chỉnh, chúng ta tiến hành kiểm tra tính hiệu quả của mô-đun bằng cách thực hiện một loạt các thử nghiệm nhỏ. Điều này giúp đảm bảo rằng hệ thống hoạt động đúng cách và sẵn sàng xử lý các yêu cầu phức tạp hơn trong tương lai. Tóm lại, việc khởi tạo mô-đun RAG đòi hỏi sự chuẩn bị kỹ lưỡng về mặt công nghệ cũng như hiểu biết sâu sắc về nhu cầu của người dùng. Bằng cách làm việc chặt chẽ với các nhà phát triển khác, chúng ta có thể tạo ra một hệ thống mạnh mẽ và đáng tin cậy.class
RAG
(
dspy
.
Module
):
def
__init__
(
self
,
num_docs
=
5
):
self
.
num_docs
=
num_docs
self
.
respond
=
dspy
.
ChainOfThought
(
'contextbắn cá săn thưởng, question -> response')
def
forward
(
self
,
question
):
context
=
search
(
question
,
k
=
self
.
num_docs
)
return
self
.
respond
(
context
=
context
,
question
=
question
)
rag
=
RAG
()
score_before_optimization
=
evaluate
(
rag
)
Bước tiếp theo là khởi động Teleprompter và hoàn tất quá trình biên dịch/tối ưu hóa. Hãy nhớ rằngxem ngoại hạng anh, dspy.MIPROv2 thực chất chỉ là một phần nhỏ, hay nói cách khác là một tập con của Teleprompter, giúp định hình cấu trúc cơ bản cho hệ thống này. Quá trình khởi tạo Teleprompter đòi hỏi sự cẩn trọng và chính xác, bởi nó đóng vai trò quan trọng trong việc quản lý nội dung cũng như điều hướng các thông điệp cần hiển thị. Khi được tích hợp đầy đủ, dspy.MIPROv2 sẽ đảm nhận trách nhiệm hỗ trợ các chức năng thiết yếu, từ việc phân tích văn bản đến điều chỉnh tốc độ đọc sao cho phù hợp với người dùng. Đồng thời, việc tối ưu hóa và kiểm tra tính nhất quán giữa dspy.MIPROv2 và toàn bộ hệ thống Teleprompter là bước không thể thiếu. Điều này giúp đảm bảo rằng mọi thành phần đều hoạt động trơn tru, mang lại hiệu suất cao và trải nghiệm ổn định cho người sử dụng cuối.tp
=
dspy
.
MIPROv2
(
metric
=
metric
,
auto
=
"light"
,
num_threads
=
8
)
optimized_rag
=
tp
.
compile
(
rag
,
trainset
=
trainset
,
valset
=
valset
,
max_bootstrapped_demos
=
2
,
max_labeled_demos
=
2
,
requires_permission_to_run
=
False
)
score_after_optimization
=
evaluate
(
optimized_rag
)
Khung chương trình RAG nêu trênbắn cá săn thưởng, nhìn chung, được chia thành năm phần chính.
Phần thứ nhấtbắn cá săn thưởng, khởi tạo LLMTrong một chương trình DSPy (hoặc một chương trình APE điển hình)bắn cá săn thưởng, có ba khu vực chính thường sử dụng LLM: 1. Đầu tiên là phần xử lý đầu vào, nơi LLM được sử dụng để phân tích và hiểu ngữ cảnh của dữ liệu đầu vào. 2. Thứ hai là phần logic cốt lõi, ở đó LLM đóng vai trò như một bộ não, đưa ra quyết định hoặc gợi ý dựa trên các mô hình đã học. 3. Cuối cùng là phần sản xuất kết quả, nơi LLM giúp tinh chỉnh và tối ưu hóa đầu ra sao cho phù hợp với yêu cầu ban đầu. Đây là những bước cơ bản mà hầu hết các chương trình này đều tuân theo để tận dụng hiệu quả của công nghệ LLM.
Ba vị trí này có thể được chỉ định riêng biệt trong chương trình DSPy. Theo ví dụ mã nguồn trênbắn cá săn thưởng, chúng ta chỉ thấy việc khởi tạo một phiên bản LLM duy nhất, điều này cho thấy rằng tất cả ba vị trí đều đang sử dụng cùng một phiên bản LLM này. Tuy nhiên, tùy thuộc vào yêu cầu cụ thể của ứng dụng, bạn hoàn toàn có thể cấu hình mỗi vị trí sử dụng một phiên bản LLM khác nhau để tối ưu hóa hiệu suất hoặc đáp ứng các nhu cầu đặc thù. Điều này đặc biệt hữu ích khi các tác vụ tại các vị trí khác nhau đòi hỏi các khả năng xử lý khác biệt từ mô hình LLM.
Về các loại mô hình LLM được hỗ trợ bởi DSPycá cược bóng đá, hầu hết các mô hình phổ biến trên thị trường đều có thể tương thích, bao gồm API của các công ty như OpenAI, Anthropic, Databricks, cũng như các mô hình LLM được triển khai riêng tư trong nội bộ doanh nghiệp. Ngoài ra, DSPy còn hỗ trợ cả API của các mô hình OpenAI được cung cấp thông qua nền tảng Microsoft Azure, mang đến nhiều lựa chọn linh hoạt cho người dùng.
Phần thứ haixem ngoại hạng anh, khởi tạo tập dữ liệuRõ ràng có thể thấybắn cá săn thưởng, mã nguồn trên đã tải xuống một tập dữ liệu từ tệp ragqa_arena_tech_500.json và chia tập dữ liệu này thành bốn phần chính:
Quá trình tối ưu hóa của chương trình DSPy có nhiều điểm tương đồng với quá trình huấn luyện mô hình trong học sâuxem ngoại hạng anh, đặc biệt là trong cách sử dụng tập dữ liệu. Tuy nhiên, có một sự khác biệt đáng chú ý: trong khi các mô hình học sâu thường yêu cầu kích thước của tập huấn luyện phải lớn hơn tập kiểm chứng, thì bộ tối ưu hóa prompt của DSPy lại có yêu cầu ngược lại. Theo tài liệu chính thức của DSPy, khi phân chia dữ liệu thành tập huấn luyện và tập kiểm chứng, tỷ lệ đề xuất là 20% cho tập huấn luyện và 80% cho tập kiểm chứng [2]. Điều này giúp người dùng dễ dàng khám phá tiềm năng của các câu lệnh hoặc mẫu dữ liệu (prompts) trong các ứng dụng cụ thể, từ đó cải thiện hiệu suất tổng thể của hệ thống.
Đối với quy mô cụ thể của tập dữ liệucá cược bóng đá, tài liệu chính thức của DSPy cũng đưa ra một số khuyến nghị cụ thể [3]:
Để có cái nhìn trực quan hơn về tập dữ liệucá cược bóng đá, chúng tôi đã lấy mẫu một số ví dụ từ devset để kiểm tra, cụ thể như sau:
Bạn có thể nhận thấy rằng mỗi example đều có hai trường thông tin. Trường đầu tiên là questionxem ngoại hạng anh, đóng vai trò như dữ liệu đầu vào cho chương trình; trường thứ hai là response, đại diện cho câu trả lời mong muốn, giống như một nhãn đã được đánh dấu trước đó.
Phần thứ babắn cá săn thưởng, khởi tạo Metric và EvaluateNhư đã đề cập trước đóbắn cá săn thưởng, việc xác định metric không phải là một nhiệm vụ đơn giản. Khung DSPy cung cấp một số metric phổ biến để hỗ trợ người dùng trong quá trình này. Với sự đa dạng của các metric có sẵn, bạn có thể dễ dàng chọn những chỉ số phù hợp nhất với yêu cầu cụ thể của dự án mà không cần mất quá nhiều thời gian để tự thiết lập từ đầu. Điều này giúp tiết kiệm đáng kể công sức và tăng hiệu quả làm việc.
Trong đoạn mã trêncá cược bóng đá, chúng tôi đã sử dụng SemanticF1. Chỉ số này đo lường điểm F1 về mặt ngữ nghĩa, tức là trung bình điều hòa giữa độ nhớ lại (recall) và độ chính xác (precision). Ngoài ra, SemanticF1 không chỉ đơn thuần tính toán hai yếu tố trên mà còn xem xét sâu hơn sự phù hợp giữa các thực thể được nhận diện trong ngữ cảnh cụ thể, giúp đưa ra đánh giá toàn diện hơn cho bài toán phân loại ngữ nghĩa.
Lưu ý rằng việc tính toán F1 ở đây được áp dụng cho một example riêng lẻ. Để kiểm tra trực quanbắn cá săn thưởng, chúng ta hãy tính F1 score giữa example đó và chính nó (theo lý thuyết giá trị sẽ là 1), cụ thể như sau:
OKcá cược bóng đá, điểm số này rất gần với 1.
Đối với đầu vào phía trên
devset[6]
Với ví dụ nàybắn cá săn thưởng, chúng ta sẽ sử dụng chương trình RAG trước đó để dự đoán kết quả (được ký hiệu là pred), sau đó tính toán điểm F1 giữa câu trả lời được đánh dấu và kết quả dự đoán như sau:
Kết quả khoảng 0,53.
Tóm lạicá cược bóng đá, metric được trình bày ở trên tính toán điểm F1 giữa câu trả lời mong đợi và câu trả lời dự đoán của mô hình cho từng ví dụ riêng lẻ; trong khi Evaluate được sử dụng để tính điểm F1 cho từng ví dụ trong tập kiểm tra, từ đó đưa ra kết quả đánh giá tổng thể (tính trung bình). Điều quan trọng cần lưu ý là trong mã nguồn đã cho, khi khởi tạo Evaluate, tập dữ liệu kiểm tra (testset) được sử dụng hoàn toàn phù hợp với cách mà chúng ta đã đề cập trước đây về mục đích sử dụng bộ dữ liệu.
LLM được sử dụng để đánh giá
DSPy cũng định nghĩa trước một loạt các metric phổ biếnbắn cá săn thưởng, chẳng hạn như:
from
dspy.evaluate.metrics
import
answer_exact_match
from
dspy.evaluate.metrics
import
answer_passage_match
from
dspy.evaluate
import
SemanticF1
from
dspy.evaluate
import
AnswerCorrectness
from
dspy.evaluate
import
AnswerFaithfulness
Bạn có thể đoán ý nghĩa của từng metric thông qua tên của chúng. Tuy nhiênxem ngoại hạng anh, nhìn chung, việc đóng gói metric trong DSPy hiện tại vẫn chưa thực sự hoàn thiện. Khả năng tương thích giữa các metric này và các Teleprompter bên trong DSPy cũng còn nhiều hạn chế. Trong thực tế, rất có thể bạn sẽ cần tự viết lại hoặc tùy chỉnh Metric của riêng mình, vì vậy hãy chú ý cẩn thận ở phần này.
Phần thứ tưbắn cá săn thưởng, khởi tạo module RAG
Đoạn mã trên định nghĩa một module tên là
RAG
Bạn có thể tạo một module mới dựa trên nội dung gốccá cược bóng đá, đó chính là chương trình RAG mà chúng ta dự định cải tiến theo từng vòng lặp. Module RAG này bao gồm một sub-module con bên trong, được đặt tên là
respond
xem ngoại hạng anh, nó sử dụng cách tiếp cận CoT để gọi LLM và nhậ
DSPy's Module được lấy cảm hứng từ khái niệm nn.Module trong PyTorchbắn cá săn thưởng, giúp abstract các đối tượng một cách linh hoạt. Khi khởi tạo, bạn có thể gán giá trị trực tiếp cho thuộc tính để initialize cá Đặc biệt hơn, một instance của Module có thể được sử dụng như một hàm, tức là bạn có thể gọi nó giống như khi thực hiện một hàm thông thường trong Python, mang lại sự tiện lợi và dễ dàng tích hợp vào các pipeline phức tạp.
Phần thứ nămcá cược bóng đá, khởi tạo Teleprompter và hoàn thành biên dịch/tối ưu hóa 。
Phần này là cốt lõi của DSPy. DSPy cung cấp nhiều bộ tối ưu hóaxem ngoại hạng anh, trong đó MIPROv2 là một trong những cái tên quan trọng nhất. Thuật toán cụ thể của MIPROv2 được trình bày chi tiết trong tài liệu [4]. Việc triển khai nó bao gồm ba bước thực thi lớn: Trước tiên, quá trình khởi tạo bắt đầu bằng cách thiết lập các thông số cơ bản và cấu hình ban đầu, giúp định hình nền tảng cho các bước tiếp theo. Tiếp đến, giai đoạn thứ hai tập trung vào việc tối ưu hóa các tham số thông qua các thuật toán phức tạp, trong đó có sự kết hợp giữa các kỹ thuật học sâu và phương pháp tối ưu truyền thống. Cuối cùng, bước cuối cùng kiểm tra và điều chỉnh kết quả dựa trên các tiêu chí đánh giá đã được thiết lập trước đó, đảm bảo rằng hệ thống hoạt động hiệu quả và ổn định.
Thực hiện chi tiết của các bước này tương đối phức tạpxem ngoại hạng anh, chúng ta sẽ giới thiệu trong phần tiếp theo.
Lưu ý rằng trong mã ở đâyxem ngoại hạng anh, hai tập dữ liệu được truyền vào khi gọi
tp.compile
là trainset và valset. Tại đâyxem ngoại hạng anh, từ ngữ "biên dịch" thực sự có nhiều điểm tương đồng với quá trình huấn luyện mô hình.
compile
Do giới hạn về mặt độ dàicá cược bóng đá, bài viết hôm nay tạm dừng ở đây. Trong phần tiếp theo, chúng ta sẽ tiếp tục thảo luận hai vấn đề còn tồn đọng:
Đối với mã code ở trêncá cược bóng đá, người đọc cẩn thận có thể sẽ nảy sinh một thắc mắc: Tại sao lại không thấy việc gọi prompt của LLM? Hơn nữa, meta-prompt quan trọng mà chúng ta đã đề cập trước đó, tại sao cũng không xuất hiện trong mã code? Thực tế, điều này liên quan đến cách thiết kế cơ chế Signature của DSPy. Trong hệ thống này, các prompt được xử lý một cách tinh vi ngay từ giai đoạn thiết lập cấu hình, giúp mã code trở nên gọn gàng và dễ quản lý hơn. Điều này cũng cho phép người dùng tùy chỉnh prompt theo ý muốn mà không cần phải viết lại nhiều dòng mã phức tạp. Vì vậy, mặc dù chúng ta không nhìn thấy trực tiếp meta-prompt hay prompt của LLM trong mã, nhưng nó vẫn đang hoạt động đằng sau hậu trường để đảm bảo mọi thứ vận hành trơn tru.
Thực hiện cụ thể của MIPROv2 (ba bước chính).
Phân tích chi tiết về phân tán: Tính nhất quán nhân quả và không gian-thời gian tương đối
Các bài viết được chọn lọc khác :