main.py
import random
from util_chatgpt import chatgpt_request
from util_mysql import MysqlTool
from time import sleep
if __name__ == '__main__':
proxy = {
'http': 'http://127.0.0.1:7890',
'https': 'http://127.0.0.1:7890'
}
# 使用自己数据库对应的参数密码即可
mysqltool = MysqlTool(host="192.168.10.203", port=3306, db='marketingcenter', user="db_writer", passwd="******", charset='utf8')
mysqltool.connect()
while True:
myresult = mysqltool.query_one("SELECT * FROM GptDemo where readStatus=0 order by id limit 1")
prompt = myresult[1]+","+myresult[2]+","+myresult[3]
print(prompt)
try:
result = chatgpt_request(prompt, proxy)
response_text = result.get('choices')[0].get('message').get('content')
print(response_text)
sql = "UPDATE marketingcenter.GptDemo set readStatus = %s, ChatgptResult = %s where id = %s"
params = (1, response_text, myresult[0])
mysqltool.update(sql, params)
except ZeroDivisionError as e:
print('except:', e)
finally:
print("OK", end='\n')
num = random.randint(3, 10)
print("延时睡眠时间: ", num)
sleep(num)
mysqltool.close()
util_chatgpt.py
import requests
def chatgpt_request(prompt, proxy):
api_key = 'sk-XXXXXX' # 请替换为你的 API 密钥
url = 'https://api.openai.com/v1/chat/completions'
# url = ''
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
data = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.7
}
response = requests.post(url, headers=headers, json=data, proxies=proxy, verify=False)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"API 请求错误,状态码:{response.status_code}")
util_mysql.py
import pymysql
class MysqlTool:
def __init__(self, host, port, db, user, passwd, charset="utf8"):
self.host = host
self.port = 3306
self.db = db
self.user = user
self.passwd = passwd
self.charset = charset
def connect(self):
'''创建数据库连接与执行对象'''
try:
self.conn = pymysql.connect(host=self.host, port=self.port, db=self.db, user=self.user, passwd=self.passwd, charset=self.charset)
self.cursor = self.conn.cursor()
except Exception as e:
print(e)
def close(self):
'''关闭数据库连接与执行对象'''
try:
self.cursor.close()
self.conn.close()
except Exception as e:
print(e)
def query_one(self, sql, params=()):
'''获取一行数据'''
try:
self.cursor.execute(sql, params)
result = self.cursor.fetchone()
except Exception as e:
print(e)
else:
return result
def query_all(self, sql, params=()):
'''获取所有行数据'''
try:
self.cursor.execute(sql, params)
result = self.cursor.fetchall()
except Exception as e:
print(e)
else:
return result
def __edit(self, sql, params=()):
'''增删改查的私有方法'''
try:
execute_count = self.cursor.execute(sql, params)
self.conn.commit()
except Exception as e:
print(e)
self.conn.rollback()
else:
return execute_count
def insert(self, sql, params=()):
'''插入数据'''
return self.__edit(sql, params)
def update(self, sql, params=()):
'''更新数据'''
return self.__edit(sql, params)
def delete(self, sql, params=()):
'''删除数据'''
return self.__edit(sql, params)