Gemini 2.0震撼发布遭遇滑铁卢!能否击败Claude3.5?逻辑推理到算法实现的全面测试!gemini-exp-1206+LlamaIndex实现Text to SQL多表联合查询!含完整源码
🔥🔥🔥本篇笔记所对应的视频 https://youtu.be/V5M7V2ByZhA
使用unsloth微调llama3,请给出完整代码
用python实现赛博朋克风格的贪吃蛇游戏
用 Python 实现一个程序,判断 32416190071 是否是一个素数。
how many 'r's in strawberrrry?
用python实现计算179424673是第几个质数?不要引入外部库
用 Python 实现一个程序,检查12345678910111213141516和1718192021222324252627是否互质。
###答案:
互质
完全数探索:
编写python程序解决下面的题目:
如果一个数等于它所有真因子(除了自身以外的因子)的和,那么这个数被称为完全数。
例如:6=1+2+3是完全数。 求第5个完全数的位数。
###答案:
第5个完全数是: 33550336
它的位数是: 8
数列模式识别题:
已知一个特殊的数列,第1项为1,从第2项开始,
每一项等于前一项的各位数字的平方和,
直到某一项重复出现为止,形成循环。
编写Python程序计算第2024项的值。
#答案是1
大数分解与质数探索题:
编写Python程序,找出区间[10^12, 10^12 + 1000]内的所有孪生质数对。
(孪生质数是指差为2的两个质数,如(3,5), (5,7), (11,13)等)
###答案:
在区间[1000000000000, 1000000001000]内找到4对孪生质数:
1. (1000000000061, 1000000000063)
2. (1000000000331, 1000000000333)
3. (1000000000787, 1000000000789)
4. (1000000000931, 1000000000933)
算法思维转换题:
定义一个正整数的"镜像质数对":如果一个数是质数,且将其十进制表示左右翻转后得到的数也是质数,则这两个数构成一个镜像质数对。
例如:13和31构成一个镜像质数对。
请编写程序找出所有小于10^7的镜像质数对的数量。注意:一个数的镜像如果等于自身,只能算作一个镜像质数对。
###答案:
小于10000000的镜像质数对数量为:41610
前10个镜像质数对示例:
2 <-> 2
3 <-> 3
5 <-> 5
7 <-> 7
11 <-> 11
13 <-> 31
17 <-> 71
37 <-> 73
79 <-> 97
101 <-> 101
其中回文质数的数量:781
组合数学题:
编写Python程序,找出满足以下条件的最小正整数n:
- n的十进制表示恰好有2024位
- n是7的倍数
- n的所有数位都是1或3
###答案
数字是: 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111331
验证:
位数: 2024
是7的倍数: True
只包含1和3: True
元认知推理难题:
三位哲学家参加一个实验:
- 实验者在每人背后贴一个数字标签
- 每人只能看到其他人的标签,看不到自己的
- 标签上的数字可能相同也可能不同
- 实验者问:"你能确定自己标签上的数字吗?"
第一位哲学家说:"我不能确定"
第二位哲学家说:"我也不能确定"
第三位哲学家说:"我现在知道我的数字了"
已知标签上的数字都是1到5之间的整数。
请推理第三位哲学家的标签数字是多少。要求详细说明推理过程。
###答案:3
蓝眼睛和红眼睛
一个岛上有100个人,其中95个是蓝眼睛,5个是红眼睛。岛上有三个奇怪的规则:
1. 不能通过镜子和水面来看自己眼睛的颜色。
2. 不能告诉对方别人的眼睛颜色。
3. 一旦知道自己眼睛的颜色,必须在当夜离岛。
虽然题设说有5个红眼睛,但岛民并不知道。
一天,有一个旅行者来到岛上,当着所有人的面,
不留神说了一句:你们这里有红眼睛的人,岛民都听到了这句话。
假设岛民都是聪明人,问这个岛接下来会发生什么事情?
提示词遵循能力
You are an expert AI assistant tasked with providing thorough, step-by-step reasoning for complex problems or questions. Follow these guidelines:
1. For each step in your reasoning process:
- Provide a clear, descriptive title
- Explain your thought process in detail
- Use markdown formatting for better readability
2. Use at least 3 different methods or approaches to analyze the problem
3. Include exploration of alternative answers and potential errors in your reasoning
4. Be aware of your limitations as a language model and explicitly state what you can and cannot do
5. When re-examining your reasoning, use a genuinely different approach
6. Apply best practices in problem-solving and critical thinking
7. Conclude with a final answer only when you've exhausted your analysis
8. Structure your response as follows:
```json
{
"step": 1,
"title": "Identifying Key Information",
"content": "## Identifying Key Information\n\nTo begin solving this problem, we need to carefully examine the given information and identify the crucial elements that will guide our solution process. This involves...",
"next_action": "continue"
}
```
9. For the final step, use "next_action": "final_answer" and include your conclusion
10. Strive for clarity, thoroughness, and intellectual honesty in your analysis
How many 'r's in strawberrrry?
🔥🔥🔥如有问题,请联系我的徽信 stoeng
🔥🔥🔥本项目代码由AI超元域频道制作,观看更多大模型微调视频请访问我的频道⬇
👉👉👉我的哔哩哔哩频道
👉👉👉我的YouTube频道
👉👉👉我的开源项目 https://github.com/win4r/AISuperDomain
充值openai api key或者ChatGPT会员可以使用wildcard虚拟卡充值。wildcard官方链接:
wildcard注册教程和充值API教程(国内打开速度快):
wildcard注册教程和充值API教程(海外打开速度快):
https://stoeng.medium.com/保姆级教程-通过wildcard虚拟信用卡订阅chatgpt-claude会员和api-百分百可用-a2865a18df01
text to sql
import os
import pandas as pd
from datetime import datetime
from sqlalchemy import (
create_engine,
MetaData,
Table,
Column,
String,
Integer,
Float,
DateTime,
ForeignKey,
select,
text
)
from llama_index.core import SQLDatabase
from llama_index.core.query_engine import NLSQLTableQueryEngine
from llama_index.llms.openai import OpenAI
from llama_index.llms.gemini import Gemini
# 创建数据库引擎和元数据对象
engine = create_engine("sqlite:///:memory:")
metadata_obj = MetaData()
# 创建员工表
employees_table = Table(
"employees",
metadata_obj,
Column("employee_id", String(10), primary_key=True),
Column("name", String(50)),
Column("department", String(50)),
Column("position", String(50)),
Column("hire_date", DateTime),
Column("salary", Float),
Column("manager_id", String(10), ForeignKey("employees.employee_id"))
)
# 创建产品表
products_table = Table(
"products",
metadata_obj,
Column("product_id", String(10), primary_key=True),
Column("name", String(100)),
Column("category", String(50)),
Column("unit_price", Float),
Column("stock_quantity", Integer),
Column("supplier", String(100))
)
# 创建订单表
orders_table = Table(
"orders",
metadata_obj,
Column("order_id", String(20), primary_key=True),
Column("customer_name", String(100)),
Column("product_id", String(10), ForeignKey("products.product_id")),
Column("employee_id", String(10), ForeignKey("employees.employee_id")),
Column("order_date", DateTime),
Column("quantity", Integer),
Column("total_amount", Float),
Column("status", String(20))
)
# 创建所有表
metadata_obj.create_all(engine)
def safe_read_csv(file_path, **kwargs):
"""安全地读取CSV文件,支持多种编码和错误处理"""
encodings = ['utf-8', 'gbk', 'gb2312', 'utf-8-sig']
for encoding in encodings:
try:
df = pd.read_csv(file_path, encoding=encoding, **kwargs)
return df
except Exception as e:
print(f"尝试使用 {encoding} 编码: {str(e)}")
continue
raise ValueError(f"无法读取文件 {file_path}")
def check_table_exists(table_name):
"""检查表是否存在且有数据"""
query = f"""
SELECT COUNT(*) as count
FROM {table_name}
"""
try:
with engine.connect() as conn:
result = pd.read_sql(query, conn)
return result['count'].iloc[0] > 0
except Exception:
return False
def clear_table(table_name):
"""清空指定表的所有数据"""
with engine.connect() as conn:
conn.execute(text(f"DELETE FROM {table_name}"))
conn.commit()
def load_sample_data():
"""加载更多的示例数据到数据库"""
# 示例员工数据
employees_data = [
{
"employee_id": "E001",
"name": "张三",
"department": "销售部",
"position": "销售经理",
"hire_date": datetime(2020, 1, 15),
"salary": 15000.0,
"manager_id": None
},
{
"employee_id": "E002",
"name": "李四",
"department": "销售部",
"position": "销售代表",
"hire_date": datetime(2021, 3, 1),
"salary": 8000.0,
"manager_id": "E001"
},
{
"employee_id": "E003",
"name": "王五",
"department": "销售部",
"position": "销售代表",
"hire_date": datetime(2021, 6, 1),
"salary": 8500.0,
"manager_id": "E001"
},
{
"employee_id": "E004",
"name": "赵六",
"department": "市场部",
"position": "市场经理",
"hire_date": datetime(2020, 3, 15),
"salary": 14000.0,
"manager_id": None
},
{
"employee_id": "E005",
"name": "钱七",
"department": "市场部",
"position": "市场专员",
"hire_date": datetime(2022, 1, 10),
"salary": 7500.0,
"manager_id": "E004"
}
]
# 示例产品数据
products_data = [
{
"product_id": "P001",
"name": "高性能笔记本电脑",
"category": "电子产品",
"unit_price": 6999.0,
"stock_quantity": 50,
"supplier": "科技有限公司"
},
{
"product_id": "P002",
"name": "无线蓝牙耳机",
"category": "配件",
"unit_price": 999.0,
"stock_quantity": 500,
"supplier": "音频科技公司"
},
{
"product_id": "P003",
"name": "智能手机",
"category": "电子产品",
"unit_price": 4999.0,
"stock_quantity": 200,
"supplier": "科技有限公司"
},
{
"product_id": "P004",
"name": "显示器",
"category": "电子产品",
"unit_price": 2999.0,
"stock_quantity": 80,
"supplier": "显示技术公司"
},
{
"product_id": "P005",
"name": "机械键盘",
"category": "配件",
"unit_price": 599.0,
"stock_quantity": 300,
"supplier": "外设科技公司"
}
]
# 生成更多的订单数据
orders_data = [
{
"order_id": "O20240101001",
"customer_name": "陈一",
"product_id": "P001",
"employee_id": "E002",
"order_date": datetime(2024, 1, 1),
"quantity": 2,
"total_amount": 13998.0,
"status": "已完成"
},
{
"order_id": "O20240102001",
"customer_name": "刘二",
"product_id": "P002",
"employee_id": "E002",
"order_date": datetime(2024, 1, 2),
"quantity": 5,
"total_amount": 4995.0,
"status": "已完成"
},
{
"order_id": "O20240115001",
"customer_name": "张明",
"product_id": "P003",
"employee_id": "E003",
"order_date": datetime(2024, 1, 15),
"quantity": 3,
"total_amount": 14997.0,
"status": "已完成"
},
{
"order_id": "O20240120001",
"customer_name": "李明",
"product_id": "P001",
"employee_id": "E003",
"order_date": datetime(2024, 1, 20),
"quantity": 1,
"total_amount": 6999.0,
"status": "已完成"
},
{
"order_id": "O20240125001",
"customer_name": "王海",
"product_id": "P004",
"employee_id": "E002",
"order_date": datetime(2024, 1, 25),
"quantity": 4,
"total_amount": 11996.0,
"status": "处理中"
}
]
# 将数据转换为DataFrame并导入数据库
employees_df = pd.DataFrame(employees_data)
products_df = pd.DataFrame(products_data)
orders_df = pd.DataFrame(orders_data)
employees_df.to_sql('employees', engine, if_exists='append', index=False)
products_df.to_sql('products', engine, if_exists='append', index=False)
orders_df.to_sql('orders', engine, if_exists='append', index=False)
print("示例数据加载成功!")
def setup_query_engine():
"""设置查询引擎,添加表关系描述"""
sql_database = SQLDatabase(engine, include_tables=["employees", "products", "orders"])
# 定义表关系和业务含义
table_context = """
表关系说明:
1. employees(员工表):
- employee_id: 员工ID,主键
- manager_id: 上级主管ID,关联employee_id
- 其他字段:name(姓名), department(部门), position(职位), hire_date(入职日期), salary(薪资)
2. products(产品表):
- product_id: 产品ID,主键
- 其他字段:name(产品名), category(类别), unit_price(单价), stock_quantity(库存), supplier(供应商)
3. orders(订单表):
- order_id: 订单ID,主键
- product_id: 产品ID,关联products表
- employee_id: 销售员工ID,关联employees表
- 其他字段:customer_name(客户名), order_date(订单日期), quantity(数量), total_amount(总金额), status(状态)
关联关系:
- orders.employee_id 关联 employees.employee_id (订单与销售员工关系)
- orders.product_id 关联 products.product_id (订单与产品关系)
- employees.manager_id 关联 employees.employee_id (员工与主管关系)
"""
llm = Gemini(temperature=0.1, model="models/gemini-exp-1206",) # 可以根据需要更改模型
# llm = OpenAI(temperature=0.1, model="gpt-4")
query_engine = NLSQLTableQueryEngine(
sql_database=sql_database,
tables=["employees", "products", "orders"],
llm=llm,
table_context=table_context
)
return query_engine
def run_complex_queries():
"""执行复杂的多表联动查询示例"""
query_engine = setup_query_engine()
# 更新后的多表联动查询示例
complex_queries = [
# 销售业绩分析(明确区分employee表的自关联)
"""分析每个销售员(employees表)的业绩,显示他们的姓名、
所属部门、主管姓名(通过manager_id关联查询),
以及负责的订单数量和总销售额(通过orders表关联)""",
# 产品销售趋势(明确时间范围)
"""分析2024年1月的产品销售情况,按产品类别统计
销售额、销售数量,并显示负责销售的员工人数""",
# 部门绩效分析(加入更多维度)
"""统计销售部的整体表现,包括:
1. 部门总销售额
2. 每个销售员的平均订单金额
3. 按产品类别统计的销售分布""",
# 高价值客户分析(避免列名歧义)
"""查找订单总金额超过10000元的客户信息,显示:
1. 客户姓名
2. 购买的产品名称和类别
3. 负责销售的员工姓名和部门""",
# 库存预警分析
"""分析库存量低于100的产品的销售情况,显示:
1. 产品名称和当前库存
2. 最近的销售记录
3. 负责销售的员工信息"""
]
for query in complex_queries:
try:
print("\n执行查询:", query)
response = query_engine.query(query)
print("查询结果:", response)
print("\n" + "="*50)
except Exception as e:
print(f"查询执行错误: {str(e)}")
# 示例SQL实现(用于参考)
complex_sql_examples = {
"销售业绩分析": """
SELECT
e.name as employee_name,
e.department,
m.name as manager_name,
COUNT(o.order_id) as order_count,
SUM(o.total_amount) as total_sales
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.employee_id
LEFT JOIN orders o ON e.employee_id = o.employee_id
GROUP BY e.employee_id, e.name, e.department, m.name
""",
"产品类别销售趋势": """
SELECT
p.category,
DATE_FORMAT(o.order_date, '%Y-%m') as month,
SUM(o.total_amount) as monthly_sales,
SUM(o.quantity) as total_quantity,
COUNT(DISTINCT o.employee_id) as sales_staff_count
FROM products p
JOIN orders o ON p.product_id = o.product_id
WHERE o.order_date >= DATE_SUB(NOW(), INTERVAL 3 MONTH)
GROUP BY p.category, DATE_FORMAT(o.order_date, '%Y-%m')
ORDER BY p.category, month
""",
"部门销售绩效": """
SELECT
e.department,
SUM(o.total_amount) as total_sales,
AVG(o.total_amount) as avg_order_amount,
COUNT(o.order_id) / COUNT(DISTINCT e.employee_id) as avg_orders_per_employee
FROM employees e
LEFT JOIN orders o ON e.employee_id = o.employee_id
GROUP BY e.department
"""
}
def main():
try:
# 设置 OpenAI API 密钥
# os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')
os.environ["GEMINI_API_KEY"] = userdata.get('GEMINI_API_KEY')
# 加载示例数据
load_sample_data()
# 运行复杂查询示例
run_complex_queries()
except Exception as e:
print(f"主程序错误: {str(e)}")
if __name__ == "__main__":
main()