diff --git a/docs/docs/tutorials/sql-agent.ipynb b/docs/docs/tutorials/sql-agent.ipynb index 843179305..a06626f40 100644 --- a/docs/docs/tutorials/sql-agent.ipynb +++ b/docs/docs/tutorials/sql-agent.ipynb @@ -264,183 +264,109 @@ "text": [ "================================\u001b[1m Human Message \u001b[0m=================================\n", "\n", - "Which sales agent made the most in sales in 2009?\n", + "Which genre on average has the longest tracks?\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_list_tables (call_0MfnhUYmRNVe03m6fYClaoa0)\n", - " Call ID: call_0MfnhUYmRNVe03m6fYClaoa0\n", + " sql_db_list_tables (call_d8lCgywSroCgpVl558nmXKwA)\n", + " Call ID: call_d8lCgywSroCgpVl558nmXKwA\n", " Args:\n", - " tool_input:\n", "=================================\u001b[1m Tool Message \u001b[0m=================================\n", "Name: sql_db_list_tables\n", "\n", "Album, Artist, Customer, Employee, Genre, Invoice, InvoiceLine, MediaType, Playlist, PlaylistTrack, Track\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_schema (call_XwI6uES0HeZ2xCRxkkdWzB3I)\n", - " Call ID: call_XwI6uES0HeZ2xCRxkkdWzB3I\n", + " sql_db_schema (call_nNf6IIUcwMYLIkE0l6uWkZHe)\n", + " Call ID: call_nNf6IIUcwMYLIkE0l6uWkZHe\n", " Args:\n", - " table_names: Employee, Invoice, InvoiceLine\n", + " table_names: Genre, Track\n", "=================================\u001b[1m Tool Message \u001b[0m=================================\n", "Name: sql_db_schema\n", "\n", "\n", - "CREATE TABLE \"Employee\" (\n", - "\t\"EmployeeId\" INTEGER NOT NULL, \n", - "\t\"LastName\" NVARCHAR(20) NOT NULL, \n", - "\t\"FirstName\" NVARCHAR(20) NOT NULL, \n", - "\t\"Title\" NVARCHAR(30), \n", - "\t\"ReportsTo\" INTEGER, \n", - "\t\"BirthDate\" DATETIME, \n", - "\t\"HireDate\" DATETIME, \n", - "\t\"Address\" NVARCHAR(70), \n", - "\t\"City\" NVARCHAR(40), \n", - "\t\"State\" NVARCHAR(40), \n", - "\t\"Country\" NVARCHAR(40), \n", - "\t\"PostalCode\" NVARCHAR(10), \n", - "\t\"Phone\" NVARCHAR(24), \n", - "\t\"Fax\" NVARCHAR(24), \n", - "\t\"Email\" NVARCHAR(60), \n", - "\tPRIMARY KEY (\"EmployeeId\"), \n", - "\tFOREIGN KEY(\"ReportsTo\") REFERENCES \"Employee\" (\"EmployeeId\")\n", + "CREATE TABLE \"Genre\" (\n", + "\t\"GenreId\" INTEGER NOT NULL, \n", + "\t\"Name\" NVARCHAR(120), \n", + "\tPRIMARY KEY (\"GenreId\")\n", ")\n", "\n", "/*\n", - "3 rows from Employee table:\n", - "EmployeeId\tLastName\tFirstName\tTitle\tReportsTo\tBirthDate\tHireDate\tAddress\tCity\tState\tCountry\tPostalCode\tPhone\tFax\tEmail\n", - "1\tAdams\tAndrew\tGeneral Manager\tNone\t1962-02-18 00:00:00\t2002-08-14 00:00:00\t11120 Jasper Ave NW\tEdmonton\tAB\tCanada\tT5K 2N1\t+1 (780) 428-9482\t+1 (780) 428-3457\tandrew@chinookcorp.com\n", - "2\tEdwards\tNancy\tSales Manager\t1\t1958-12-08 00:00:00\t2002-05-01 00:00:00\t825 8 Ave SW\tCalgary\tAB\tCanada\tT2P 2T3\t+1 (403) 262-3443\t+1 (403) 262-3322\tnancy@chinookcorp.com\n", - "3\tPeacock\tJane\tSales Support Agent\t2\t1973-08-29 00:00:00\t2002-04-01 00:00:00\t1111 6 Ave SW\tCalgary\tAB\tCanada\tT2P 5M5\t+1 (403) 262-3443\t+1 (403) 262-6712\tjane@chinookcorp.com\n", + "3 rows from Genre table:\n", + "GenreId\tName\n", + "1\tRock\n", + "2\tJazz\n", + "3\tMetal\n", "*/\n", "\n", "\n", - "CREATE TABLE \"Invoice\" (\n", - "\t\"InvoiceId\" INTEGER NOT NULL, \n", - "\t\"CustomerId\" INTEGER NOT NULL, \n", - "\t\"InvoiceDate\" DATETIME NOT NULL, \n", - "\t\"BillingAddress\" NVARCHAR(70), \n", - "\t\"BillingCity\" NVARCHAR(40), \n", - "\t\"BillingState\" NVARCHAR(40), \n", - "\t\"BillingCountry\" NVARCHAR(40), \n", - "\t\"BillingPostalCode\" NVARCHAR(10), \n", - "\t\"Total\" NUMERIC(10, 2) NOT NULL, \n", - "\tPRIMARY KEY (\"InvoiceId\"), \n", - "\tFOREIGN KEY(\"CustomerId\") REFERENCES \"Customer\" (\"CustomerId\")\n", - ")\n", - "\n", - "/*\n", - "3 rows from Invoice table:\n", - "InvoiceId\tCustomerId\tInvoiceDate\tBillingAddress\tBillingCity\tBillingState\tBillingCountry\tBillingPostalCode\tTotal\n", - "1\t2\t2009-01-01 00:00:00\tTheodor-Heuss-Straße 34\tStuttgart\tNone\tGermany\t70174\t1.98\n", - "2\t4\t2009-01-02 00:00:00\tUllevålsveien 14\tOslo\tNone\tNorway\t0171\t3.96\n", - "3\t8\t2009-01-03 00:00:00\tGrétrystraat 63\tBrussels\tNone\tBelgium\t1000\t5.94\n", - "*/\n", - "\n", - "\n", - "CREATE TABLE \"InvoiceLine\" (\n", - "\t\"InvoiceLineId\" INTEGER NOT NULL, \n", - "\t\"InvoiceId\" INTEGER NOT NULL, \n", + "CREATE TABLE \"Track\" (\n", "\t\"TrackId\" INTEGER NOT NULL, \n", + "\t\"Name\" NVARCHAR(200) NOT NULL, \n", + "\t\"AlbumId\" INTEGER, \n", + "\t\"MediaTypeId\" INTEGER NOT NULL, \n", + "\t\"GenreId\" INTEGER, \n", + "\t\"Composer\" NVARCHAR(220), \n", + "\t\"Milliseconds\" INTEGER NOT NULL, \n", + "\t\"Bytes\" INTEGER, \n", "\t\"UnitPrice\" NUMERIC(10, 2) NOT NULL, \n", - "\t\"Quantity\" INTEGER NOT NULL, \n", - "\tPRIMARY KEY (\"InvoiceLineId\"), \n", - "\tFOREIGN KEY(\"TrackId\") REFERENCES \"Track\" (\"TrackId\"), \n", - "\tFOREIGN KEY(\"InvoiceId\") REFERENCES \"Invoice\" (\"InvoiceId\")\n", + "\tPRIMARY KEY (\"TrackId\"), \n", + "\tFOREIGN KEY(\"MediaTypeId\") REFERENCES \"MediaType\" (\"MediaTypeId\"), \n", + "\tFOREIGN KEY(\"GenreId\") REFERENCES \"Genre\" (\"GenreId\"), \n", + "\tFOREIGN KEY(\"AlbumId\") REFERENCES \"Album\" (\"AlbumId\")\n", ")\n", "\n", "/*\n", - "3 rows from InvoiceLine table:\n", - "InvoiceLineId\tInvoiceId\tTrackId\tUnitPrice\tQuantity\n", - "1\t1\t2\t0.99\t1\n", - "2\t1\t4\t0.99\t1\n", - "3\t2\t6\t0.99\t1\n", + "3 rows from Track table:\n", + "TrackId\tName\tAlbumId\tMediaTypeId\tGenreId\tComposer\tMilliseconds\tBytes\tUnitPrice\n", + "1\tFor Those About To Rock (We Salute You)\t1\t1\t1\tAngus Young, Malcolm Young, Brian Johnson\t343719\t11170334\t0.99\n", + "2\tBalls to the Wall\t2\t2\t1\tNone\t342562\t5510424\t0.99\n", + "3\tFast As a Shark\t3\t2\t1\tF. Baltes, S. Kaufman, U. Dirkscneider & W. Hoffman\t230619\t3990994\t0.99\n", "*/\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_schema (call_dHE5FKSycFhYIkdPKtpEk9rM)\n", - " Call ID: call_dHE5FKSycFhYIkdPKtpEk9rM\n", + " sql_db_query_checker (call_urTRmtiGtTxkwHtscec7Fd2K)\n", + " Call ID: call_urTRmtiGtTxkwHtscec7Fd2K\n", " Args:\n", - " table_names: Customer\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: sql_db_schema\n", - "\n", - "\n", - "CREATE TABLE \"Customer\" (\n", - "\t\"CustomerId\" INTEGER NOT NULL, \n", - "\t\"FirstName\" NVARCHAR(40) NOT NULL, \n", - "\t\"LastName\" NVARCHAR(20) NOT NULL, \n", - "\t\"Company\" NVARCHAR(80), \n", - "\t\"Address\" NVARCHAR(70), \n", - "\t\"City\" NVARCHAR(40), \n", - "\t\"State\" NVARCHAR(40), \n", - "\t\"Country\" NVARCHAR(40), \n", - "\t\"PostalCode\" NVARCHAR(10), \n", - "\t\"Phone\" NVARCHAR(24), \n", - "\t\"Fax\" NVARCHAR(24), \n", - "\t\"Email\" NVARCHAR(60) NOT NULL, \n", - "\t\"SupportRepId\" INTEGER, \n", - "\tPRIMARY KEY (\"CustomerId\"), \n", - "\tFOREIGN KEY(\"SupportRepId\") REFERENCES \"Employee\" (\"EmployeeId\")\n", - ")\n", - "\n", - "/*\n", - "3 rows from Customer table:\n", - "CustomerId\tFirstName\tLastName\tCompany\tAddress\tCity\tState\tCountry\tPostalCode\tPhone\tFax\tEmail\tSupportRepId\n", - "1\tLuís\tGonçalves\tEmbraer - Empresa Brasileira de Aeronáutica S.A.\tAv. Brigadeiro Faria Lima, 2170\tSão José dos Campos\tSP\tBrazil\t12227-000\t+55 (12) 3923-5555\t+55 (12) 3923-5566\tluisg@embraer.com.br\t3\n", - "2\tLeonie\tKöhler\tNone\tTheodor-Heuss-Straße 34\tStuttgart\tNone\tGermany\t70174\t+49 0711 2842222\tNone\tleonekohler@surfeu.de\t5\n", - "3\tFrançois\tTremblay\tNone\t1498 rue Bélanger\tMontréal\tQC\tCanada\tH2G 1A7\t+1 (514) 721-4711\tNone\tftremblay@gmail.com\t3\n", - "*/\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " sql_db_query_checker (call_QPtWY5cUZWgWhr13Kz6eBJkU)\n", - " Call ID: call_QPtWY5cUZWgWhr13Kz6eBJkU\n", - " Args:\n", - " query: SELECT e.EmployeeId, e.FirstName, e.LastName, SUM(i.Total) as TotalSales\n", - "FROM Employee e\n", - "JOIN Customer c ON e.EmployeeId = c.SupportRepId\n", - "JOIN Invoice i ON c.CustomerId = i.CustomerId\n", - "WHERE i.InvoiceDate BETWEEN '2009-01-01' AND '2009-12-31'\n", - "GROUP BY e.EmployeeId, e.FirstName, e.LastName\n", - "ORDER BY TotalSales DESC\n", + " query: SELECT Genre.Name, AVG(Track.Milliseconds) AS AvgMilliseconds\n", + "FROM Track\n", + "JOIN Genre ON Track.GenreId = Genre.GenreId\n", + "GROUP BY Genre.Name\n", + "ORDER BY AvgMilliseconds DESC\n", "LIMIT 1;\n", "=================================\u001b[1m Tool Message \u001b[0m=================================\n", "Name: sql_db_query_checker\n", "\n", "```sql\n", - "SELECT e.EmployeeId, e.FirstName, e.LastName, SUM(i.Total) as TotalSales\n", - "FROM Employee e\n", - "JOIN Customer c ON e.EmployeeId = c.SupportRepId\n", - "JOIN Invoice i ON c.CustomerId = i.CustomerId\n", - "WHERE i.InvoiceDate BETWEEN '2009-01-01' AND '2009-12-31'\n", - "GROUP BY e.EmployeeId, e.FirstName, e.LastName\n", - "ORDER BY TotalSales DESC\n", + "SELECT Genre.Name, AVG(Track.Milliseconds) AS AvgMilliseconds\n", + "FROM Track\n", + "JOIN Genre ON Track.GenreId = Genre.GenreId\n", + "GROUP BY Genre.Name\n", + "ORDER BY AvgMilliseconds DESC\n", "LIMIT 1;\n", "```\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_query (call_X747YMElSeY5D3CfhE6KzLUj)\n", - " Call ID: call_X747YMElSeY5D3CfhE6KzLUj\n", + " sql_db_query (call_RNMqyUEMv0rvy0UxSwrXY2AV)\n", + " Call ID: call_RNMqyUEMv0rvy0UxSwrXY2AV\n", " Args:\n", - " query: SELECT e.EmployeeId, e.FirstName, e.LastName, SUM(i.Total) as TotalSales\n", - "FROM Employee e\n", - "JOIN Customer c ON e.EmployeeId = c.SupportRepId\n", - "JOIN Invoice i ON c.CustomerId = i.CustomerId\n", - "WHERE i.InvoiceDate BETWEEN '2009-01-01' AND '2009-12-31'\n", - "GROUP BY e.EmployeeId, e.FirstName, e.LastName\n", - "ORDER BY TotalSales DESC\n", + " query: SELECT Genre.Name, AVG(Track.Milliseconds) AS AvgMilliseconds\n", + "FROM Track\n", + "JOIN Genre ON Track.GenreId = Genre.GenreId\n", + "GROUP BY Genre.Name\n", + "ORDER BY AvgMilliseconds DESC\n", "LIMIT 1;\n", "=================================\u001b[1m Tool Message \u001b[0m=================================\n", "Name: sql_db_query\n", "\n", - "[(5, 'Steve', 'Johnson', 164.34)]\n", + "[('Sci Fi & Fantasy', 2911783.0384615385)]\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "\n", - "The sales agent who made the most in sales in 2009 was Steve Johnson, with total sales of 164.34.\n" + "The genre with the longest average track length is \"Sci Fi & Fantasy,\" with an average duration of about 2,911,783 milliseconds (approximately 48.5 minutes) per track.\n" ] } ], "source": [ - "question = \"Which sales agent made the most in sales in 2009?\"\n", + "question = \"Which genre on average has the longest tracks?\"\n", "\n", "for step in agent.stream(\n", " {\"messages\": [{\"role\": \"user\", \"content\": question}]},\n", @@ -484,7 +410,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "992f6ce6-f932-4f44-994c-c0ba5032dbd1", "metadata": {}, "outputs": [], @@ -606,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "8b3ce09d-0eec-456d-8447-d04f79ccfc23", "metadata": {}, "outputs": [], @@ -652,13 +578,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "f728ed5f-7bcd-489e-9174-4e4725962335", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "" ] @@ -684,7 +610,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "6c800a77-2359-4011-ab0c-dad22ed333b1", "metadata": {}, "outputs": [ @@ -694,135 +620,92 @@ "text": [ "================================\u001b[1m Human Message \u001b[0m=================================\n", "\n", - "Which sales agent made the most in sales in 2009?\n", + "Which genre on average has the longest tracks?\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "\n", "Available tables: Album, Artist, Customer, Employee, Genre, Invoice, InvoiceLine, MediaType, Playlist, PlaylistTrack, Track\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_schema (call_rMs3sF1HVcAGggGf89ZNvtLE)\n", - " Call ID: call_rMs3sF1HVcAGggGf89ZNvtLE\n", + " sql_db_schema (call_qxKtYiHgf93AiTDin9ez5wFp)\n", + " Call ID: call_qxKtYiHgf93AiTDin9ez5wFp\n", " Args:\n", - " table_names: Employee,Invoice,Customer\n", + " table_names: Genre,Track\n", "=================================\u001b[1m Tool Message \u001b[0m=================================\n", "Name: sql_db_schema\n", "\n", "\n", - "CREATE TABLE \"Customer\" (\n", - "\t\"CustomerId\" INTEGER NOT NULL, \n", - "\t\"FirstName\" NVARCHAR(40) NOT NULL, \n", - "\t\"LastName\" NVARCHAR(20) NOT NULL, \n", - "\t\"Company\" NVARCHAR(80), \n", - "\t\"Address\" NVARCHAR(70), \n", - "\t\"City\" NVARCHAR(40), \n", - "\t\"State\" NVARCHAR(40), \n", - "\t\"Country\" NVARCHAR(40), \n", - "\t\"PostalCode\" NVARCHAR(10), \n", - "\t\"Phone\" NVARCHAR(24), \n", - "\t\"Fax\" NVARCHAR(24), \n", - "\t\"Email\" NVARCHAR(60) NOT NULL, \n", - "\t\"SupportRepId\" INTEGER, \n", - "\tPRIMARY KEY (\"CustomerId\"), \n", - "\tFOREIGN KEY(\"SupportRepId\") REFERENCES \"Employee\" (\"EmployeeId\")\n", + "CREATE TABLE \"Genre\" (\n", + "\t\"GenreId\" INTEGER NOT NULL, \n", + "\t\"Name\" NVARCHAR(120), \n", + "\tPRIMARY KEY (\"GenreId\")\n", ")\n", "\n", "/*\n", - "3 rows from Customer table:\n", - "CustomerId\tFirstName\tLastName\tCompany\tAddress\tCity\tState\tCountry\tPostalCode\tPhone\tFax\tEmail\tSupportRepId\n", - "1\tLuís\tGonçalves\tEmbraer - Empresa Brasileira de Aeronáutica S.A.\tAv. Brigadeiro Faria Lima, 2170\tSão José dos Campos\tSP\tBrazil\t12227-000\t+55 (12) 3923-5555\t+55 (12) 3923-5566\tluisg@embraer.com.br\t3\n", - "2\tLeonie\tKöhler\tNone\tTheodor-Heuss-Straße 34\tStuttgart\tNone\tGermany\t70174\t+49 0711 2842222\tNone\tleonekohler@surfeu.de\t5\n", - "3\tFrançois\tTremblay\tNone\t1498 rue Bélanger\tMontréal\tQC\tCanada\tH2G 1A7\t+1 (514) 721-4711\tNone\tftremblay@gmail.com\t3\n", + "3 rows from Genre table:\n", + "GenreId\tName\n", + "1\tRock\n", + "2\tJazz\n", + "3\tMetal\n", "*/\n", "\n", "\n", - "CREATE TABLE \"Employee\" (\n", - "\t\"EmployeeId\" INTEGER NOT NULL, \n", - "\t\"LastName\" NVARCHAR(20) NOT NULL, \n", - "\t\"FirstName\" NVARCHAR(20) NOT NULL, \n", - "\t\"Title\" NVARCHAR(30), \n", - "\t\"ReportsTo\" INTEGER, \n", - "\t\"BirthDate\" DATETIME, \n", - "\t\"HireDate\" DATETIME, \n", - "\t\"Address\" NVARCHAR(70), \n", - "\t\"City\" NVARCHAR(40), \n", - "\t\"State\" NVARCHAR(40), \n", - "\t\"Country\" NVARCHAR(40), \n", - "\t\"PostalCode\" NVARCHAR(10), \n", - "\t\"Phone\" NVARCHAR(24), \n", - "\t\"Fax\" NVARCHAR(24), \n", - "\t\"Email\" NVARCHAR(60), \n", - "\tPRIMARY KEY (\"EmployeeId\"), \n", - "\tFOREIGN KEY(\"ReportsTo\") REFERENCES \"Employee\" (\"EmployeeId\")\n", + "CREATE TABLE \"Track\" (\n", + "\t\"TrackId\" INTEGER NOT NULL, \n", + "\t\"Name\" NVARCHAR(200) NOT NULL, \n", + "\t\"AlbumId\" INTEGER, \n", + "\t\"MediaTypeId\" INTEGER NOT NULL, \n", + "\t\"GenreId\" INTEGER, \n", + "\t\"Composer\" NVARCHAR(220), \n", + "\t\"Milliseconds\" INTEGER NOT NULL, \n", + "\t\"Bytes\" INTEGER, \n", + "\t\"UnitPrice\" NUMERIC(10, 2) NOT NULL, \n", + "\tPRIMARY KEY (\"TrackId\"), \n", + "\tFOREIGN KEY(\"MediaTypeId\") REFERENCES \"MediaType\" (\"MediaTypeId\"), \n", + "\tFOREIGN KEY(\"GenreId\") REFERENCES \"Genre\" (\"GenreId\"), \n", + "\tFOREIGN KEY(\"AlbumId\") REFERENCES \"Album\" (\"AlbumId\")\n", ")\n", "\n", "/*\n", - "3 rows from Employee table:\n", - "EmployeeId\tLastName\tFirstName\tTitle\tReportsTo\tBirthDate\tHireDate\tAddress\tCity\tState\tCountry\tPostalCode\tPhone\tFax\tEmail\n", - "1\tAdams\tAndrew\tGeneral Manager\tNone\t1962-02-18 00:00:00\t2002-08-14 00:00:00\t11120 Jasper Ave NW\tEdmonton\tAB\tCanada\tT5K 2N1\t+1 (780) 428-9482\t+1 (780) 428-3457\tandrew@chinookcorp.com\n", - "2\tEdwards\tNancy\tSales Manager\t1\t1958-12-08 00:00:00\t2002-05-01 00:00:00\t825 8 Ave SW\tCalgary\tAB\tCanada\tT2P 2T3\t+1 (403) 262-3443\t+1 (403) 262-3322\tnancy@chinookcorp.com\n", - "3\tPeacock\tJane\tSales Support Agent\t2\t1973-08-29 00:00:00\t2002-04-01 00:00:00\t1111 6 Ave SW\tCalgary\tAB\tCanada\tT2P 5M5\t+1 (403) 262-3443\t+1 (403) 262-6712\tjane@chinookcorp.com\n", - "*/\n", - "\n", - "\n", - "CREATE TABLE \"Invoice\" (\n", - "\t\"InvoiceId\" INTEGER NOT NULL, \n", - "\t\"CustomerId\" INTEGER NOT NULL, \n", - "\t\"InvoiceDate\" DATETIME NOT NULL, \n", - "\t\"BillingAddress\" NVARCHAR(70), \n", - "\t\"BillingCity\" NVARCHAR(40), \n", - "\t\"BillingState\" NVARCHAR(40), \n", - "\t\"BillingCountry\" NVARCHAR(40), \n", - "\t\"BillingPostalCode\" NVARCHAR(10), \n", - "\t\"Total\" NUMERIC(10, 2) NOT NULL, \n", - "\tPRIMARY KEY (\"InvoiceId\"), \n", - "\tFOREIGN KEY(\"CustomerId\") REFERENCES \"Customer\" (\"CustomerId\")\n", - ")\n", - "\n", - "/*\n", - "3 rows from Invoice table:\n", - "InvoiceId\tCustomerId\tInvoiceDate\tBillingAddress\tBillingCity\tBillingState\tBillingCountry\tBillingPostalCode\tTotal\n", - "1\t2\t2009-01-01 00:00:00\tTheodor-Heuss-Straße 34\tStuttgart\tNone\tGermany\t70174\t1.98\n", - "2\t4\t2009-01-02 00:00:00\tUllevålsveien 14\tOslo\tNone\tNorway\t0171\t3.96\n", - "3\t8\t2009-01-03 00:00:00\tGrétrystraat 63\tBrussels\tNone\tBelgium\t1000\t5.94\n", + "3 rows from Track table:\n", + "TrackId\tName\tAlbumId\tMediaTypeId\tGenreId\tComposer\tMilliseconds\tBytes\tUnitPrice\n", + "1\tFor Those About To Rock (We Salute You)\t1\t1\t1\tAngus Young, Malcolm Young, Brian Johnson\t343719\t11170334\t0.99\n", + "2\tBalls to the Wall\t2\t2\t1\tNone\t342562\t5510424\t0.99\n", + "3\tFast As a Shark\t3\t2\t1\tF. Baltes, S. Kaufman, U. Dirkscneider & W. Hoffman\t230619\t3990994\t0.99\n", "*/\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_query (call_TQyoJSV78xEWHqc69PiYHjdS)\n", - " Call ID: call_TQyoJSV78xEWHqc69PiYHjdS\n", + " sql_db_query (call_RPN3GABMfb6DTaFTLlwnZxVN)\n", + " Call ID: call_RPN3GABMfb6DTaFTLlwnZxVN\n", " Args:\n", - " query: SELECT e.FirstName, e.LastName, SUM(i.Total) as TotalSales\n", - "FROM Employee e\n", - "JOIN Customer c ON e.EmployeeId = c.SupportRepId\n", - "JOIN Invoice i ON c.CustomerId = i.CustomerId\n", - "WHERE strftime('%Y', i.InvoiceDate) = '2009'\n", - "GROUP BY e.EmployeeId\n", - "ORDER BY TotalSales DESC\n", + " query: SELECT Genre.Name, AVG(Track.Milliseconds) AS AvgTrackLength\n", + "FROM Track\n", + "JOIN Genre ON Track.GenreId = Genre.GenreId\n", + "GROUP BY Genre.GenreId\n", + "ORDER BY AvgTrackLength DESC\n", "LIMIT 1;\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "Tool Calls:\n", - " sql_db_query (call_tSQOuxc7iQ1jvLzXSofCqK4V)\n", - " Call ID: call_tSQOuxc7iQ1jvLzXSofCqK4V\n", + " sql_db_query (call_PR4s8ymiF3ZQLaoZADXtdqcl)\n", + " Call ID: call_PR4s8ymiF3ZQLaoZADXtdqcl\n", " Args:\n", - " query: SELECT e.FirstName, e.LastName, SUM(i.Total) as TotalSales\n", - "FROM Employee e\n", - "JOIN Customer c ON e.EmployeeId = c.SupportRepId\n", - "JOIN Invoice i ON c.CustomerId = i.CustomerId\n", - "WHERE strftime('%Y', i.InvoiceDate) = '2009'\n", - "GROUP BY e.EmployeeId\n", - "ORDER BY TotalSales DESC\n", + " query: SELECT Genre.Name, AVG(Track.Milliseconds) AS AvgTrackLength\n", + "FROM Track\n", + "JOIN Genre ON Track.GenreId = Genre.GenreId\n", + "GROUP BY Genre.GenreId\n", + "ORDER BY AvgTrackLength DESC\n", "LIMIT 1;\n", "=================================\u001b[1m Tool Message \u001b[0m=================================\n", "Name: sql_db_query\n", "\n", - "[('Steve', 'Johnson', 164.34)]\n", + "[('Sci Fi & Fantasy', 2911783.0384615385)]\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "\n", - "The sales agent who made the most in sales in 2009 was Steve Johnson, with total sales of 164.34.\n" + "The genre with the longest tracks on average is \"Sci Fi & Fantasy,\" with an average track length of approximately 2,911,783 milliseconds.\n" ] } ], "source": [ - "question = \"Which sales agent made the most in sales in 2009?\"\n", + "question = \"Which genre on average has the longest tracks?\"\n", "\n", "for step in agent.stream(\n", " {\"messages\": [{\"role\": \"user\", \"content\": question}]},\n", @@ -838,7 +721,7 @@ "source": [ "!!! tip\n", "\n", - " See [LangSmith trace](https://smith.langchain.com/public/36a9ebbb-7cc4-4c54-b4db-cb12e124a649/r) for the above run." + " See [LangSmith trace](https://smith.langchain.com/public/94b8c9ac-12f7-4692-8706-836a1f30f1ea/r) for the above run." ] }, {