python轉中文,NLP實戰一 利用OpenAI Codex實現中文轉python代碼
python轉中文,NLP實戰一 利用OpenAI Codex實現中文轉python代碼
OpenAI Codex 是 GPT-3 的后代;它的訓練數據包含自然語言和來自公開來源的數十億行源代碼,包括公共 GitHub 存儲庫中的代碼。OpenAI Codex 最擅長 Python,但它也精通十多種語言,包括 JavaScript、Go、Perl、PHP、Ruby、Swift 和 TypeScript,甚至是 Shell。它有 14KB 的 Python 代碼內存,而 GPT-3 只有 4KB——因此它在執行任何任務時可以考慮超過 3 倍的上下文信息。
GPT-3 的主要技能是生成自然語言以響應自然語言提示,這意味著它影響世界的唯一方式是通過讀者的思想。OpenAI Codex 具有對 GPT-3 的大部分自然語言理解,但它會生成工作代碼——這意味著您可以使用 API 向任何軟件發出英語命令。OpenAI Codex 使計算機能夠更好地理解人們的意圖,這可以使每個人都能用計算機做更多的事情。
一旦程序員知道要構建什么,編寫代碼的行為就可以被認為是 (1) 將問題分解為更簡單的問題,以及 (2) 將這些簡單問題映射到已經存在的代碼(庫、API 或函數)存在。后一項活動可能是編程中最不有趣的部分(也是進入門檻最高的部分),也是 OpenAI Codex 最擅長的地方。OpenAI Codex 是一種通用編程模型,這意味著它基本上可以應用于任何編程任務(盡管結果可能會有所不同)。我們已經成功地將它用于編譯、解釋代碼和重構代碼。但我們知道,我們只觸及了可以做的事情的皮毛。
先調用有道翻譯的API接口,將漢語翻譯為英語,再用GTP3的codex生成代碼
import requests
from hashlib import md5
import time
import random
#請求地址
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"appVersion = "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36"headers = {"Accept": "application/json, text/javascript, */*; q=0.01","Accept-Encoding": "gzip, deflate","Accept-Language": "zh-CN,zh;q=0.9","Connection": "keep-alive","Content-Length": "244","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","Cookie": "OUTFOX_SEARCH_USER_ID=-1506602845@10.169.0.82; JSESSIONID=aaaUggpd8kfhja1AIJYpx; OUTFOX_SEARCH_USER_ID_NCOO=108436537.92676207; ___rl__test__cookies=1597502296408","Host": "fanyi.youdao.com","Origin": "http://fanyi.youdao.com","Referer": "http://fanyi.youdao.com/","user-agent": appVersion,"X-Requested-With": "XMLHttpRequest",
}
#模擬js
def r(e):# bvt = md5(appVersion.encode()).hexdigest()# ltsr = str(int(time.time() * 1000))# ii = r + str(random.randint(0,9))return {"ts": r,"bv": t,"salt": i,"sign": md5(("fanyideskweb" + e + i + "]BjuETDhU)zqSxf-=B#7m").encode()).hexdigest()}
def fanyi(word):data = r(word)params = {"i": word,"from": "UTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": data["salt"],"sign": data["sign"],"lts": data["ts"],"bv": data["bv"],"doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTlME",}response = requests.post(url=url,headers=headers,data=params)return response.json()text="""計算一組點之間的平均距離"""
result = fanyi(text)
r_data = result["translateResult"]
for data in r_data:print(data[0]["tgt"])print(data[0]["src"])
import os
import openai
import json
openai.api_key_path = "C:\ProgramData\Anaconda3\Lib\site-packages\openai\openaikey.txt"# openai.api_key = os.getenv("OPENAI_API_KEY")response = openai.Completion.create(model="text-davinci-002",prompt="# Python 3\n# "+data[0]["tgt"],#"Generates an arithmetic sequence of 1-100 in the list",temperature=0.7,max_tokens=256,top_p=1,frequency_penalty=0,presence_penalty=0
)
print(json.loads(str(response))['choices'][0]['text'])
生成的結果
# in (x,y) coordinate space
#
def average(points):sumx = 0sumy = 0for i in range(len(points)):sumx = sumx + points[i][0]sumy = sumy + points[i][1]return sumx / len(points), sumy / len(points)#
# Python 3
# Calculate the Euclidean distance between two points
# in (x,y) coordinate space
#
def euclideanDistance(point1, point2):sum = 0for i in range(len(point1)):sum = sum + math.pow(point1[i] - point2[i], 2)return math.sqrt(sum)#
# Python 3
# Calculate the average distance between a set of points
# in (x,y) coordinate space
#
def averageDistance(points):sum = 0for i in range(len(points)):for j in range(i + 1, len(points)):
實現的方法
拿到OPENAI的key
解決 OpenAI’s API is not available in your country.(不支持中國)
https://beta.openai.com/overview購買了OPENAI賬號
import os
import openai
openai.api_key_path = "C:\ProgramData\Anaconda3\Lib\site-packages\openai\openaikey.txt"
# openai.api_key = os.getenv("")
response = openai.Completion.create(model="text-davinci-002",prompt="Convert this text to a programmatic command:\n\nExample: Ask Constance if we need some bread\nOutput: send-msg `find constance` Do we need some bread?\n\nContact the ski store and figure out if I can get my skis fixed before I leave on Thursday",temperature=0,max_tokens=100,top_p=1.0,frequency_penalty=0.2,presence_penalty=0.0,stop=["\n"]
)
response
安裝jupyter_codex
python轉中文。參考 https://mnb.macnica.co.jp/2022/04/ai/gpt-3codex.html
$ pip install jupyterlab-codex
此插件允許您從 Jupyter Notebook 無縫調用 Codex API。
命令行中輸入jupyter lab啟動 jupyter lab
C:\WINDOWS\system32>jupyter lab
參考
https://www.theverge.com/2021/8/10/22618128/openai-codex-natural-language-into-code-api-beta-access?scrolla=5eb6d68b7fedc32c19ef33b4
https://www.youtube.com/watch?v=SGUCcjHTmGY