大模型比赛

第二届世界科学智能大赛逻辑推理赛道:复杂推理能力评估

根据这个比赛熟悉了一下大模型使用和调用,目前使用pyqt调用大模型做了一个聊天和翻译的软件,可以多线程实现实时翻译和聊天,只是在能力上有些限制,仅能处理中文和英文。还有挺多小问题,更新之后,准备开源在GitHub,大家可以一起试试
在这里插入图片描述

1、安装模块

!pip install scipy openai tiktoken retry dashscope loguru
SciPy 是一个用于科学计算的开源Python库。它构建在NumPy之上,提供了许多用于数学、科学和工程的函数。
OpenAI 是OpenAI公司提供的Python库,主要用于与OpenAI的API交互,包括GPT-3和其他模型。可以用于自然语言处理(NLP)、图像生成等任务
tiktoken 是一个用于对文本进行分词和标记化的Python库,常用于自然语言处理任务。
retry 是一个用于自动重试失败操作的Python库。适用于网络请求等可能会临时失败的操作。
DashScope 是一个用于创建数据可视化和交互式Web应用程序的Python库,构建在Plotly之上。它允许使用纯Python代码创建和部署Web应用程序。
Loguru 是一个简单且功能强大的Python日志记录库,旨在简化日志记录的配置和使用。

1.1 各种常用模块

from multiprocessing import Process, Manager
import json
import os
from pprint import pprint    # 提供了打印数据结构的美化格式。
import re                    # 正则表达式操作模块。
from tqdm import tqdm
import random

import uuid                # 用于生成唯一的标识符。
import openai
import tiktoken
import json
import numpy as np
import requests
from retry import retry
from scipy import sparse
#from rank_bm25 import BM25Okapi
#import jieba
from http import HTTPStatus
import dashscope


from concurrent.futures import ThreadPoolExecutor, as_completed        # 提供了线程和进程池。
from loguru import logger
import json
import time
from tqdm import tqdm

logger.remove()  # 移除默认的控制台输出
logger.add("logs/app_{time:YYYY-MM-DD}.log", level="INFO", rotation="00:00", retention="10 days", compression="zip")

MODEL_NAME = 'qwen2-7b-instruct'

1.2 简单使用

1.2.1

from multiprocessing import Process, Manager

def worker(d, key, value):
    d[key] = value

if __name__ == "__main__":
    manager = Manager()
    d = manager.dict()

    p1 = Process(target=worker, args=(d, 'key1', 'value1'))
    p2 = Process(target=worker, args=(d, 'key2', 'value2'))

    p1.start()
    p2.start()
    p1.join()
    p2.join()

    print(d)

1.2.2 json

import json

data = {'key': 'value'}
json_str = json.dumps(data)
print(json_str)

data_back = json.loads(json_str)
print(data_back)

1.2.3

from pprint import pprint

data = {'key': 'value', 'list': [1, 2, 3, 4, 5]}
pprint(data)


import re

text = "The rain in Spain"
result = re.search(r"\bS\w+", text)
print(result.group())


import uuid

print(uuid.uuid4())

1.2.4 openai

import openai

openai.api_key = 'your-api-key'

response = openai.Completion.create(
    engine="davinci",
    prompt="Hello, world!",
    max_tokens=5
)

print(response.choices[0].text.strip())

1.2.5 tiktoken
文本分词

import tiktoken

tokenizer = tiktoken.get_tokenizer('gpt2')

text = "Hello, world!"
tokens = tokenizer.encode(text)
print(tokens)

decoded_text = tokenizer.decode(tokens)
print(decoded_text)

1.2.6 retry
自动重试失败操作的Python库。适用于网络请求等可能会临时失败的操作

from retry import retry

@retry(tries=3, delay=2)
def test_retry():
    print("Trying...")
    raise Exception("Failed")

test_retry()

1.2.7 loguru

from loguru import logger

logger.add("logs/app_{time:YYYY-MM-DD}.log", level="INFO", rotation="00:00", retention="10 days", compression="zip")

logger.info("This is an info message")

2、调用API接口流程

1.1 设置环境变量

环境变量通常用于配置程序的参数、密钥等敏感信息,而不直接写入代码中。使用环境变量可以增强程序的安全性和灵活性。

1.2 使用.env文件(最推荐的方法)

例如使用deepseek平台翻译时,可设置如下的env文件内的内容
创建文件,写入如下内容,后在Python文件内加载

OPENAI_MODEL=deepseek-chat
OPENAI_API_KEY=your_api_key
OPENAI_API_BASE=https://api.deepseek.com/v1

CONFIG_FILE_INPUT=input.xlsx
CONFIG_FILE_OUTPUT=output.xlsx
CONFIG_TARGET_LANG=英语

main.py

from dotenv import load_dotenv, find_dotenv

# 加载.env中的环境变量
load_dotenv(find_dotenv())
# 从环境变量加载必要参数
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.api_base = os.getenv("OPENAI_API_BASE")
openai_model = os.getenv("OPENAI_MODEL")
# 输入文件
input_file = os.getenv("CONFIG_FILE_INPUT")
# 输出文件
output_file = os.getenv("CONFIG_FILE_OUTPUT")
# 需要翻译成的目标语言
target_lang = os.getenv("CONFIG_TARGET_LANG")
# 需要排除的字段
expected_for_word = ["admin"]

1.3 设置默认值

import os

# 获取环境变量的值,若未设置则返回默认值 'default_key'
api_key = os.getenv('OPENAI_API_KEY', 'default_key')

print(f'The API Key is: {api_key}')

1.4 临时设置

在shell中设置

export OPENAI_API_KEY="your-api-key"
export OPENAI_API_BASE="https://api.openai.com"

在Python程序中设置

import os

# 设置环境变量
os.environ['OPENAI_API_KEY'] = 'your-api-key'
os.environ['OPENAI_API_BASE'] = 'https://api.openai.com'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值