{"id":598,"date":"2025-01-11T15:28:59","date_gmt":"2025-01-11T15:28:59","guid":{"rendered":"https:\/\/smolagents.org\/?post_type=docs&#038;p=598"},"modified":"2025-01-11T15:40:54","modified_gmt":"2025-01-11T15:40:54","password":"","slug":"text-to-sql-example","status":"publish","type":"docs","link":"https:\/\/smolagents.org\/ar\/docs\/text-to-sql-example\/","title":{"rendered":"\u0645\u062b\u0627\u0644 \u0644\u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0646\u0635 \u0625\u0644\u0649 \u0644\u063a\u0629QL"},"content":{"rendered":"<p>\u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u064a\u060c \u0633\u0646\u0631\u0649 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u064a \u0643\u064a\u0641\u064a\u0629 \u062a\u0646\u0641\u064a\u0630 \u0648\u0643\u064a\u0644 \u064a\u0633\u062a\u0641\u064a\u062f \u0645\u0646 SQL \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645&nbsp;<code>smolagents<\/code>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u062f\u0639\u0648\u0646\u0627 \u0646\u0628\u062f\u0623 \u0628\u0627\u0644\u0633\u0624\u0627\u0644 \u0627\u0644\u0630\u0647\u0628\u064a: \u0644\u0645\u0627\u0630\u0627 \u0644\u0627 \u0646\u0628\u0642\u064a \u0627\u0644\u0623\u0645\u0631 \u0628\u0633\u064a\u0637\u064b\u0627 \u0648\u0646\u0633\u062a\u062e\u062f\u0645 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u0642\u064a\u0627\u0633\u064a \u0644\u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0646\u0635 \u0625\u0644\u0649 SQL\u061f<\/p>\n<\/blockquote>\n\n\n\n<p>\u064a\u0639\u062a\u0628\u0631 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 \u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0646\u0635 \u0625\u0644\u0649 \u0645\u0639\u0627\u062f\u0644\u0629 \u0642\u064a\u0627\u0633\u064a \u0647\u0634\u064b\u0627\u060c \u0646\u0638\u0631\u064b\u0627 \u0644\u0623\u0646 \u0627\u0633\u062a\u0639\u0644\u0627\u0645 SQL \u0627\u0644\u0630\u064a \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0643\u0648\u0646 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d. \u0628\u0644 \u0648\u0627\u0644\u0623\u0633\u0648\u0623 \u0645\u0646 \u0630\u0644\u0643\u060c \u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0627\u0644\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u060c \u0648\u0644\u0643\u0646 \u0644\u0627 \u064a\u062b\u064a\u0631 \u062e\u0637\u0623\u064b\u060c \u0648\u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0630\u0644\u0643 \u064a\u0639\u0637\u064a \u0628\u0639\u0636 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u063a\u064a\u0631 \u0627\u0644\u0635\u062d\u064a\u062d\u0629\/\u063a\u064a\u0631 \u0627\u0644\u0645\u0641\u064a\u062f\u0629 \u062f\u0648\u0646 \u0623\u0646 \u064a\u062b\u064a\u0631 \u0625\u0646\u0630\u0627\u0631\u064b\u0627.<\/p>\n\n\n\n<p>\ud83d\udc49 \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0630\u0644\u0643\u060c \u064a\u0633\u062a\u0637\u064a\u0639 \u0646\u0638\u0627\u0645 \u0627\u0644\u0648\u0643\u064a\u0644 \u0641\u062d\u0635 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0628\u0634\u0643\u0644 \u0646\u0642\u062f\u064a \u0648\u062a\u062d\u062f\u064a\u062f \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0627\u0644\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u064a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u063a\u064a\u064a\u0631 \u0623\u0645 \u0644\u0627\u060c \u0645\u0645\u0627 \u064a\u0645\u0646\u062d\u0647 \u062f\u0641\u0639\u0629 \u0643\u0628\u064a\u0631\u0629 \u0641\u064a \u0627\u0644\u0623\u062f\u0627\u0621.<\/p>\n\n\n\n<p>\u062f\u0639\u0648\u0646\u0627 \u0646\u0628\u0646\u064a \u0647\u0630\u0627 \u0627\u0644\u0648\u0643\u064a\u0644! \ud83d\udcaa<\/p>\n\n\n\n<p>\u0623\u0648\u0644\u0627\u064b\u060c \u0646\u0642\u0648\u0645 \u0628\u0625\u0639\u062f\u0627\u062f \u0628\u064a\u0626\u0629 SQL:<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0645\u0646 sqlalalchemy \u0627\u0633\u062a\u064a\u0631\u0627\u062f (\n    create_engine,\n    MetaData,\n    \u062c\u062f\u0648\u0644,\n    \u0639\u0645\u0648\u062f,\n    \u0633\u0644\u0633\u0644\u0629,\n    \u0639\u062f\u062f \u0635\u062d\u064a\u062d,\n    \u0639\u0627\u0626\u0645,\n    \u0625\u062f\u0631\u0627\u062c,\n    \u0641\u062d\u0635,\n    \u0646\u0635,\n)\n\n\u0627\u0644\u0645\u062d\u0631\u0643 = \u0625\u0646\u0634\u0627\u0621_\u0645\u062d\u0631\u0643 (\"sqlite:\/\/\/\/:\u0627\u0644\u0630\u0627\u0643\u0631\u0629:\")\nmetadata_obj = MetaData()\n\n<em># \u0625\u0646\u0634\u0627\u0621 \u062c\u062f\u0648\u0644 SQL \u0627\u0644\u0645\u062f\u064a\u0646\u0629<\/em>\n\u0627\u0644\u062c\u062f\u0648\u0644_\u0627\u0644\u0627\u0633\u0645 = \"\u0627\u0644\u0625\u064a\u0635\u0627\u0644\u0627\u062a\"\n\u0627\u0644\u0625\u064a\u0635\u0627\u0644\u0627\u062a = \u062c\u062f\u0648\u0644(\n    table_name,\n    metadata_obj,\n    \u0627\u0644\u0639\u0645\u0648\u062f(\"receipt_id\"\u060c \u0639\u062f\u062f \u0635\u062d\u064a\u062d\u060c \u0645\u0641\u062a\u0627\u062d \u0623\u0633\u0627\u0633\u064a=\u0635\u062d\u064a\u062d),\n    \u0627\u0644\u0639\u0645\u0648\u062f(\"\u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644\"\u060c \u0633\u0644\u0633\u0644\u0629 (16)\u060c \u0645\u0641\u062a\u0627\u062d \u0623\u0633\u0627\u0633\u064a=\u0635\u062d\u064a\u062d),\n    \u0627\u0644\u0639\u0645\u0648\u062f(\"\u0627\u0644\u0633\u0639\u0631\"\u060c \u0639\u0627\u0626\u0645),\n    \u0627\u0644\u0639\u0645\u0648\u062f(\"\u0625\u0643\u0631\u0627\u0645\u064a\u0629\"\u060c \u0639\u0627\u0626\u0645),\n)\nmetadata_obj.create_all(\u0627\u0644\u0645\u062d\u0631\u0643)\n\n\u0627\u0644\u0635\u0641\u0648\u0641 = [\n    {\"receipt_id\": 1, \"\u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644\": \"Alan Payne\"\u060c \"\u0627\u0644\u0633\u0639\u0631\": 12.06\u060c \"\u0627\u0644\u0625\u0643\u0631\u0627\u0645\u064a\u0629\": 1.20},\n    {\"receipt_id\": 2, \"\u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644\": \"\u0623\u0644\u064a\u0643\u0633 \u0645\u0627\u0633\u0648\u0646\"\u060c \"\u0627\u0644\u0633\u0639\u0631\": 23.86\u060c \"\u0625\u0643\u0631\u0627\u0645\u064a\u0629\": 0.24},\n    {\"receipt_id\": 3, \"\u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644\": \"\u0648\u0648\u062f\u0631\u0648 \u0648\u064a\u0644\u0633\u0648\u0646\"\u060c \"\u0627\u0644\u0633\u0639\u0631\": 53.43\u060c \"\u0625\u0643\u0631\u0627\u0645\u064a\u0629\": 5.43},\n    {\"receipt_id\": 4, \"\u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644\": \"\u0645\u0627\u0631\u062c\u0631\u064a\u062a \u062c\u064a\u0645\u0633\"\u060c \"\u0627\u0644\u0633\u0639\u0631\": 21.11\u060c \"\u0625\u0643\u0631\u0627\u0645\u064a\u0629\": 1.00},\n]\n\u0644\u0644\u0635\u0641 \u0641\u064a \u0627\u0644\u0635\u0641\u0648\u0641\n    stmt = \u0625\u062f\u0631\u0627\u062c (\u0627\u0644\u0625\u064a\u0635\u0627\u0644\u0627\u062a).\u0627\u0644\u0642\u064a\u0645 (** \u0635\u0641)\n    \u0645\u0639 engine.begin() \u0643\u0627\u062a\u0635\u0627\u0644\n        \u0627\u0644\u0645\u0624\u0634\u0631 = connection.execute.execute(stmt)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/examples\/text_to_sql#build-our-agent\" target=\"_blank\" rel=\"noopener\"><\/a>\u0628\u0646\u0627\u0621 \u0648\u0643\u064a\u0644\u0646\u0627<\/h3>\n\n\n\n<p>\u0648\u0627\u0644\u0622\u0646 \u0644\u0646\u062c\u0639\u0644 \u062c\u062f\u0648\u0644 SQL \u0627\u0644\u062e\u0627\u0635 \u0628\u0646\u0627 \u0642\u0627\u0628\u0644\u0627\u064b \u0644\u0644\u0627\u0633\u062a\u0631\u062c\u0627\u0639 \u0628\u0648\u0627\u0633\u0637\u0629 \u0623\u062f\u0627\u0629.<\/p>\n\n\n\n<p>\u0633\u064a\u062a\u0645 \u062a\u0636\u0645\u064a\u0646 \u0633\u0645\u0629 \u0648\u0635\u0641 \u0627\u0644\u0623\u062f\u0627\u0629 \u0641\u064a \u0645\u0648\u062c\u0647 \u0627\u0644\u0623\u062f\u0627\u0629 LLM \u0628\u0648\u0627\u0633\u0637\u0629 \u0646\u0638\u0627\u0645 \u0627\u0644\u0648\u0643\u064a\u0644: \u0641\u0647\u064a \u062a\u0639\u0637\u064a LLM \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062d\u0648\u0644 \u0643\u064a\u0641\u064a\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0623\u062f\u0627\u0629. \u0647\u0630\u0627 \u0647\u0648 \u0627\u0644\u0645\u0643\u0627\u0646 \u0627\u0644\u0630\u064a \u0646\u0631\u064a\u062f \u0648\u0635\u0641 \u062c\u062f\u0648\u0644 SQL.<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0627\u0644\u0645\u0641\u062a\u0634 = \u0641\u062d\u0635 (\u0627\u0644\u0645\u062d\u0631\u0643)\n\u0627\u0644\u0623\u0639\u0645\u062f\u0629_\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a = [(\u0639\u0645\u0648\u062f [\"\u0627\u0644\u0627\u0633\u0645\"]\u060c \u0639\u0645\u0648\u062f [\"\u0627\u0644\u0646\u0648\u0639\"]) \u0644 col \u0641\u064a inspector.get_columns(\"\u0627\u0644\u0625\u064a\u0635\u0627\u0644\u0627\u062a\")]\n\ntable_description = \"\u0627\u0644\u0623\u0639\u0645\u062f\u0629: \\n\" + \"\\n\".join([f\" - {\u0627\u0644\u0627\u0633\u0645}: {col_type}\" \u0644\u0644\u0627\u0633\u0645\u060c col_type \u0641\u064a columns_info])\n\u0637\u0628\u0627\u0639\u0629(table_description)<\/pre>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0627\u0644\u0623\u0639\u0645\u062f\u0629:\n  - receipt_id: INTEGER\n  - \u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644: VARCHAR(16)\n  - \u0627\u0644\u0633\u0639\u0631: \u0645\u0633\u0637\u062d: FLOAT\n  - \u0627\u0644\u0625\u0643\u0631\u0627\u0645\u064a\u0629: FLOAT<\/pre>\n\n\n\n<p>\u0627\u0644\u0622\u0646 \u062f\u0639\u0648\u0646\u0627 \u0646\u0628\u0646\u064a \u0623\u062f\u0627\u062a\u0646\u0627. \u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0645\u0627 \u064a\u0644\u064a: (\u0627\u0642\u0631\u0623\u00a0<a href=\"https:\/\/huggingface.co\/docs\/smolagents\/tutorials\/tools\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">\u0645\u0633\u062a\u0646\u062f \u0627\u0644\u0623\u062f\u0648\u0627\u062a<\/a>\u00a0\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0633\u0644\u0633\u0644\u0629 \u0645\u0633\u062a\u0646\u062f \u0645\u0639\u00a0<code>\u0627\u0644\u0623\u0648\u0627\u0645\u0631:<\/code>\u00a0\u062c\u0632\u0621 \u0633\u0631\u062f \u0627\u0644\u062d\u062c\u062c.<\/li>\n\n\n\n<li>\u0627\u0643\u062a\u0628 \u062a\u0644\u0645\u064a\u062d\u0627\u062a \u0639\u0644\u0649 \u0643\u0644 \u0645\u0646 \u0627\u0644\u0645\u062f\u062e\u0644\u0627\u062a \u0648\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a.<\/li>\n<\/ul>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0645\u0646 \u0623\u062f\u0627\u0629 \u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f smolagents\n\n@\u0623\u062f\u0627\u0629\ndef sql_engine(\u0627\u0633\u062a\u0639\u0644\u0627\u0645: str) -&gt; str:\n    \"\"\"\n    \u064a\u0633\u0645\u062d \u0644\u0643 \u0628\u0625\u062c\u0631\u0627\u0621 \u0627\u0633\u062a\u0639\u0644\u0627\u0645\u0627\u062a SQL \u0639\u0644\u0649 \u0627\u0644\u062c\u062f\u0648\u0644. \u064a\u064f\u0631\u062c\u0639 \u062a\u0645\u062b\u064a\u0644 \u0633\u0644\u0633\u0644\u0629 \u0644\u0644\u0646\u062a\u064a\u062c\u0629.\n    \u064a\u064f\u0633\u0645\u0649 \u0627\u0644\u062c\u062f\u0648\u0644 \"\u0625\u064a\u0635\u0627\u0644\u0627\u062a\". \u0648\u0635\u0641\u0647 \u0643\u0627\u0644\u062a\u0627\u0644\u064a:\n        \u0627\u0644\u0623\u0639\u0645\u062f\u0629:\n        - receipt_id: INTEGER\n        - \u0627\u0633\u0645_\u0627\u0644\u0639\u0645\u064a\u0644: VARCHAR(16)\n        - \u0627\u0644\u0633\u0639\u0631: \u0645\u0633\u0637\u062d: FLOAT\n        - \u0627\u0644\u0625\u0643\u0631\u0627\u0645\u064a\u0629: FLOAT\n\n    \u0627\u0644\u0623\u0648\u0627\u0645\u0631:\n        \u0627\u0633\u062a\u0639\u0644\u0627\u0645: \u0627\u0644\u0627\u0633\u062a\u0639\u0644\u0627\u0645 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u062a\u0646\u0641\u064a\u0630\u0647. \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0647\u0630\u0627 SQL \u0635\u062d\u064a\u062d\u064b\u0627.\n    \"\"\"\n    \u0627\u0644\u0625\u062e\u0631\u0627\u062c = \"\"\n    \u0645\u0639 engine.connect() \u0643\u0640 con:\n        \u0627\u0644\u0635\u0641\u0648\u0641 = con.execute(text(query))\n        \u0644\u0644\u0635\u0641 \u0641\u064a \u0627\u0644\u0635\u0641\u0648\u0641\n            \u0627\u0644\u0625\u062e\u0631\u0627\u062c += \"\\n\" + str(\u0635\u0641)\n    \u0625\u0631\u062c\u0627\u0639 \u0627\u0644\u0625\u062e\u0631\u0627\u062c<\/pre>\n\n\n\n<p>\u0627\u0644\u0622\u0646 \u062f\u0639\u0646\u0627 \u0646\u0646\u0634\u0626 \u0627\u0644\u0622\u0646 \u0639\u0627\u0645\u0644\u0627\u064b \u064a\u0633\u062a\u0641\u064a\u062f \u0645\u0646 \u0647\u0630\u0647 \u0627\u0644\u0623\u062f\u0627\u0629.<\/p>\n\n\n\n<p>\u0646\u062d\u0646 \u0646\u0633\u062a\u062e\u062f\u0645&nbsp;<code>CodeAgent<\/code>\u0648\u0647\u064a \u0641\u0626\u0629 \u0627\u0644\u0648\u0643\u064a\u0644 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 \u0641\u064a smolagents: \u0648\u0643\u064a\u0644 \u064a\u0643\u062a\u0628 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0641\u064a \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0648\u064a\u0645\u0643\u0646\u0647 \u062a\u0643\u0631\u0627\u0631 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0648\u0641\u0642\u064b\u0627 \u0644\u0625\u0637\u0627\u0631 \u0639\u0645\u0644 ReAct.<\/p>\n\n\n\n<p>\u0627\u0644\u0646\u0645\u0648\u0630\u062c \u0647\u0648 LLM \u0627\u0644\u0630\u064a \u064a\u0634\u063a\u0644 \u0646\u0638\u0627\u0645 \u0627\u0644\u0648\u0643\u064a\u0644. \u064a\u0633\u0645\u062d \u0644\u0643 HfApiModel \u0628\u0627\u0633\u062a\u062f\u0639\u0627\u0621 LLMs \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0648\u0627\u062c\u0647\u0629 \u0628\u0631\u0645\u062c\u0629 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 HF\u060c \u0625\u0645\u0627 \u0639\u0628\u0631 \u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0628\u062f\u0648\u0646 \u062e\u0627\u062f\u0645 \u0623\u0648 \u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0645\u062e\u0635\u0635\u0629\u060c \u0648\u0644\u0643\u0646 \u064a\u0645\u0643\u0646\u0643 \u0623\u064a\u0636\u064b\u0627 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0623\u064a \u0648\u0627\u062c\u0647\u0629 \u0628\u0631\u0645\u062c\u0629 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u062e\u0627\u0635\u0629.<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0645\u0646 smolagents smolagents \u0627\u0633\u062a\u064a\u0631\u0627\u062f CodeAgent, HfApiModel\n\n\u0648\u0643\u064a\u0644 = CodeAgent(\n    \u0627\u0644\u0623\u062f\u0648\u0627\u062a=[sql_engine],\n    model=HfApiModel(\"meta-llama\/Meta-Llama-3.1-8B-Instruct\"),\n)\nagent.run(\"\u0647\u0644 \u064a\u0645\u0643\u0646\u0643 \u0625\u0639\u0637\u0627\u0626\u064a \u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u064a\u0644 \u0627\u0644\u0630\u064a \u062d\u0635\u0644 \u0639\u0644\u0649 \u0623\u063a\u0644\u0649 \u0625\u064a\u0635\u0627\u0644\u061f\")<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/huggingface.co\/docs\/smolagents\/examples\/text_to_sql#level-2-table-joins\" target=\"_blank\" rel=\"noopener\"><\/a>\u0627\u0644\u0645\u0633\u062a\u0648\u0649 2: \u0648\u0635\u0644\u0627\u062a \u0627\u0644\u0637\u0627\u0648\u0644\u0629<\/h3>\n\n\n\n<p>\u0648\u0627\u0644\u0622\u0646 \u0644\u0646\u062c\u0639\u0644 \u0627\u0644\u0623\u0645\u0631 \u0623\u0643\u062b\u0631 \u0635\u0639\u0648\u0628\u0629! \u0646\u0631\u064a\u062f \u0623\u0646 \u064a\u062a\u0639\u0627\u0645\u0644 \u0648\u0643\u064a\u0644\u0646\u0627 \u0645\u0639 \u0627\u0644\u0648\u0635\u0644\u0627\u062a \u0639\u0628\u0631 \u062c\u062f\u0627\u0648\u0644 \u0645\u062a\u0639\u062f\u062f\u0629.<\/p>\n\n\n\n<p>\u0644\u0630\u0644\u0643 \u062f\u0639\u0648\u0646\u0627 \u0646\u0635\u0646\u0639 \u062c\u062f\u0648\u0644\u0627\u064b \u062b\u0627\u0646\u064a\u0627\u064b \u064a\u0633\u062c\u0644 \u0623\u0633\u0645\u0627\u0621 \u0627\u0644\u0646\u0648\u0627\u062f\u0644 \u0644\u0643\u0644 \u0625\u064a\u0635\u0627\u0644_\u0623\u064a\u062f\u064a!<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0627\u0644\u062c\u062f\u0648\u0644_\u0627\u0644\u0627\u0633\u0645 = \"\u0627\u0644\u0646\u0648\u0627\u062f\u0644\"\n\u0627\u0644\u0625\u064a\u0635\u0627\u0644\u0627\u062a = \u062c\u062f\u0648\u0644(\n    table_name,\n    metadata_obj,\n    \u0627\u0644\u0639\u0645\u0648\u062f(\"receipt_id\"\u060c \u0639\u062f\u062f \u0635\u062d\u064a\u062d\u060c \u0645\u0641\u062a\u0627\u062d_\u0623\u0633\u0627\u0633\u064a=\u0635\u062d\u064a\u062d),\n    \u0627\u0644\u0639\u0645\u0648\u062f(\"\u0627\u0633\u0645_\u0627\u0644\u0646\u0627\u062f\u0644\"\u060c \u0633\u0644\u0633\u0644\u0629 (16)\u060c \u0645\u0641\u062a\u0627\u062d_\u0623\u0633\u0627\u0633\u064a=\u0635\u062d\u064a\u062d),\n)\nmetadata_obj.create_all(\u0627\u0644\u0645\u062d\u0631\u0643)\n\n\u0627\u0644\u0635\u0641\u0648\u0641 = [\n    {\"receipt_id\": 1, \"waiter_name\": \"\u0643\u0648\u0631\u064a \u062c\u0648\u0646\u0633\u0648\u0646\"},\n    {\"receipt_id\": 2, \"\u0627\u0633\u0645_\u0627\u0644\u0646\u0627\u062f\u0644\": \"\u0645\u0627\u064a\u0643\u0644 \u0648\u0627\u062a\u0633\"},\n    {\"receipt_id\": 3\u060c \"\u0627\u0633\u0645_\u0627\u0644\u0646\u0627\u062f\u0644\": \"\u0645\u0627\u064a\u0643\u0644 \u0648\u0627\u062a\u0633\"},\n    {\"receipt_id\": 4, \"\u0627\u0633\u0645_\u0627\u0644\u0646\u0627\u062f\u0644\": \"\u0645\u0627\u0631\u062c\u0631\u064a\u062a \u062c\u064a\u0645\u0633\"},\n]\n\u0644\u0644\u0635\u0641 \u0641\u064a \u0627\u0644\u0635\u0641\u0648\u0641\n    stmt = \u0625\u062f\u0631\u0627\u062c (\u0625\u064a\u0635\u0627\u0644\u0627\u062a).\u0627\u0644\u0642\u064a\u0645 (**\u0635\u0641)\n    \u0645\u0639 engine.begin() \u0643\u0627\u062a\u0635\u0627\u0644\n        \u0627\u0644\u0645\u0624\u0634\u0631 = connection.execute.execute(stmt)<\/pre>\n\n\n\n<p>\u0628\u0645\u0627 \u0623\u0646\u0646\u0627 \u0642\u0645\u0646\u0627 \u0628\u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u062c\u062f\u0648\u0644\u060c \u0641\u0625\u0646\u0646\u0627 \u0646\u0642\u0648\u0645 \u0628\u062a\u062d\u062f\u064a\u062b&nbsp;<code>\u0623\u062f\u0627\u0629 SQLExecutorTool<\/code>&nbsp;\u0645\u0639 \u0648\u0635\u0641 \u0647\u0630\u0627 \u0627\u0644\u062c\u062f\u0648\u0644 \u0644\u0644\u0633\u0645\u0627\u062d \u0644\u0640 LLM \u0628\u0627\u0644\u0627\u0633\u062a\u0641\u0627\u062f\u0629 \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u062c\u062f\u0648\u0644 \u0628\u0634\u0643\u0644 \u0635\u062d\u064a\u062d.<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u062a\u062d\u062f\u064a\u062b_\u0627\u0644\u0648\u0635\u0641 = \"\"\"\"\u064a\u062a\u064a\u062d \u0644\u0643 \u062a\u0646\u0641\u064a\u0630 \u0627\u0633\u062a\u0639\u0644\u0627\u0645\u0627\u062a SQL \u0639\u0644\u0649 \u0627\u0644\u062c\u062f\u0648\u0644. \u0627\u0646\u062a\u0628\u0647 \u0625\u0644\u0649 \u0623\u0646 \u0645\u062e\u0631\u062c\u0627\u062a \u0647\u0630\u0647 \u0627\u0644\u0623\u062f\u0627\u0629 \u0639\u0628\u0627\u0631\u0629 \u0639\u0646 \u062a\u0645\u062b\u064a\u0644 \u0633\u0644\u0633\u0644 \u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u062a\u0646\u0641\u064a\u0630.\n\u064a\u0645\u0643\u0646\u0647 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u062c\u062f\u0627\u0648\u0644 \u0627\u0644\u062a\u0627\u0644\u064a\u0629: \"\"\"\"\"\n\n\u0645\u0641\u062a\u0634 = \u0641\u062d\u0635(\u0645\u062d\u0631\u0643)\n\u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u062c\u062f\u0648\u0644 \u0641\u064a [\"\u0627\u0644\u0625\u064a\u0635\u0627\u0644\u0627\u062a\"\u060c \"\u0627\u0644\u0646\u0627\u0638\u0631\u0648\u0646\"]:\n    \u0627\u0644\u0623\u0639\u0645\u062f\u0629_info = [(\u0639\u0645\u0648\u062f [\"\u0627\u0644\u0627\u0633\u0645\"]\u060c \u0639\u0645\u0648\u062f [\"\u0627\u0644\u0646\u0648\u0639\"]) \u0644\u0640 col \u0641\u064a inspector.get_columns(\u0627\u0644\u062c\u062f\u0648\u0644)]\n\n    \u0627\u0644\u062c\u062f\u0648\u0644_\u0648\u0635\u0641 \u0627\u0644\u062c\u062f\u0648\u0644 = f\"\u0627\u0644\u062c\u062f\u0648\u0644 '{\u0637\u0627\u0648\u0644\u0629}':\\n\"\n\n    table_description += \"\u0627\u0644\u0623\u0639\u0645\u062f\u0629:\\n\" + \"\\n\".join([f\" - {\u0627\u0633\u0645}: {col_type}\" \u0644\u0644\u0627\u0633\u0645\u060c \u0646\u0648\u0639_\u0627\u0644\u0639\u0645\u0648\u062f \u0641\u064a \u0627\u0644\u0623\u0639\u0645\u062f\u0629_info])\n    \u062a\u062d\u062f\u064a\u062b_\u0627\u0644\u0648\u0635\u0641 += \"\\n\\n\" + \u0648\u0635\u0641_\u0627\u0644\u062c\u062f\u0648\u0644_\u0646\n\n\u0637\u0628\u0627\u0639\u0629(update_description)<\/pre>\n\n\n\n<p>\u0646\u0638\u0631\u064b\u0627 \u0644\u0623\u0646 \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 \u0623\u0635\u0639\u0628 \u0642\u0644\u064a\u0644\u064b\u0627 \u0645\u0646 \u0627\u0644\u0637\u0644\u0628 \u0627\u0644\u0633\u0627\u0628\u0642\u060c \u0633\u0646\u0642\u0648\u0645 \u0628\u062a\u0628\u062f\u064a\u0644 \u0645\u062d\u0631\u0643 LLM \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u00a0<a href=\"https:\/\/huggingface.co\/Qwen\/Qwen2.5-Coder-32B-Instruct\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Qwen\/Qwen2.5-Coder-32B-Instructer<\/a>!<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0646\u0633\u062e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u0648\u0635\u0641 \u0645\u062d\u0631\u0643 sql_engine.description = updated_description\n\n\u0627\u0644\u0648\u0643\u064a\u0644 = CodeAgent(\n    \u0627\u0644\u0623\u062f\u0648\u0627\u062a=[sql_engine],\n    model=HfApiModel(\"Qwen\/Qwen2.5-Coder-32B-Instruct\"),\n)\n\nagent.run(\"\u0623\u064a \u0646\u0627\u062f\u0644 \u062d\u0635\u0644 \u0639\u0644\u0649 \u0625\u062c\u0645\u0627\u0644\u064a \u0623\u0645\u0648\u0627\u0644 \u0623\u0643\u062b\u0631 \u0645\u0646 \u0627\u0644\u0628\u0642\u0634\u064a\u0634\u061f\")<\/pre>\n\n\n\n<p>\u0625\u0646\u0647 \u064a\u0639\u0645\u0644 \u0645\u0628\u0627\u0634\u0631\u0629\u064b! \u0643\u0627\u0646 \u0627\u0644\u0625\u0639\u062f\u0627\u062f \u0628\u0633\u064a\u0637\u0627\u064b \u0628\u0634\u0643\u0644 \u0645\u062f\u0647\u0634\u060c \u0623\u0644\u064a\u0633 \u0643\u0630\u0644\u0643\u061f<\/p>\n\n\n\n<p>\u062a\u0645 \u0627\u0644\u0627\u0646\u062a\u0647\u0627\u0621 \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u0645\u062b\u0627\u0644! \u0644\u0642\u062f \u062a\u0637\u0631\u0642\u0646\u0627 \u0625\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u0645\u0641\u0627\u0647\u064a\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0628\u0646\u0627\u0621 \u0623\u062f\u0648\u0627\u062a \u062c\u062f\u064a\u062f\u0629.<\/li>\n\n\n\n<li>\u062a\u062d\u062f\u064a\u062b \u0648\u0635\u0641 \u0627\u0644\u0623\u062f\u0627\u0629.<\/li>\n\n\n\n<li>\u064a\u0633\u0627\u0639\u062f \u0627\u0644\u062a\u062d\u0648\u064a\u0644 \u0625\u0644\u0649 LLM \u0623\u0642\u0648\u0649 \u0641\u064a \u0645\u0633\u0627\u0639\u062f\u0629 \u0627\u0644\u0648\u0643\u064a\u0644 \u0639\u0644\u0649 \u0627\u0644\u062a\u0641\u0643\u064a\u0631 \u0627\u0644\u0645\u0646\u0637\u0642\u064a.<\/li>\n<\/ul>\n\n\n\n<p>\u2705 \u0627\u0644\u0622\u0646 \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0630\u0647\u0627\u0628 \u0644\u0628\u0646\u0627\u0621 \u0646\u0638\u0627\u0645 \u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0646\u0635 \u0625\u0644\u0649 SQL \u0627\u0644\u0630\u064a \u0637\u0627\u0644\u0645\u0627 \u062d\u0644\u0645\u062a \u0628\u0647! \u2728<\/p>","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we\u2019ll see how to implement an agent that leverages SQL using&nbsp;smolagents. Let\u2019s start with the golden question: why not keep it simple and use a standard text-to-SQL pipeline? A standard text-to-sql pipeline is brittle, since the generated SQL query can be incorrect. Even worse, the query could be incorrect, but not raise&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"doc_category":[10],"doc_tag":[],"class_list":["post-598","docs","type-docs","status-publish","hentry","doc_category-examples"],"year_month":"2026-04","word_count":879,"total_views":"4415","reactions":{"happy":"1","normal":"0","sad":"0"},"author_info":{"name":"smolagents","author_nicename":"wd-gstargmail-com","author_url":"https:\/\/smolagents.org\/ar\/author\/wd-gstargmail-com\/"},"doc_category_info":[{"term_name":"Examples","term_url":"https:\/\/smolagents.org\/ar\/docs-category\/examples\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/docs\/598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/comments?post=598"}],"version-history":[{"count":1,"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/docs\/598\/revisions"}],"predecessor-version":[{"id":599,"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/docs\/598\/revisions\/599"}],"wp:attachment":[{"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/media?parent=598"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/doc_category?post=598"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/smolagents.org\/ar\/wp-json\/wp\/v2\/doc_tag?post=598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}