Python-CharGPT的API调用操作

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)

posted on 2025-02-07 17:34  cloud_wh  阅读(83)  评论(0)    收藏  举报

导航