這個 AI 應用用來做什麼#
這個應用其實就是根據表結構生成不同類型的實體類。
先說實現的結果是什麼?
- 輸入語言: python
- 輸入 entity 框架名稱: pydantic
- 輸入 references: 建表的 SQL 或者 JSON 文件
run: 就可以得到生成好的 python 代碼
以下是根據給定的 SQL 表格生成的 Pydantic 模型的 Python 代碼:
from typing import Optional
from pydantic import BaseModel
from datetime import datetime
class EDict(BaseModel):
id: int
create_by: Optional[str]
create_time: Optional[datetime]
update_by: Optional[str]
update_time: Optional[datetime]
code: str
name: Optional[str]
remark: Optional[str]
class Config:
orm_mode = True
請注意,Pydantic 模型是一個用於 Python 的簡單數據驗證和序列化庫,它不直接與數據庫交互。您需要使用額外的庫,如 SQLAlchemy,來處理數據庫或實現與數據庫的交互代碼。此外,如果您使用的是較新版本的 Pydantic,您可能需要使用
Field
方法來進行唯一約束和其他驗證選項。
同時也支持 JAVA 的 JPA,Typescript 的 entity 定義,只要輸入自己想要的語言和包名就可以.
如何實現這個後端 AI 接口的?#
這是一個後端的 API,使用 streamship 實現實際上非常簡單:
- https://www.steamship.com/ 註冊帳號,並且獲得 api-key
- 安裝 streamship
pip install steamship
- 設置 api-key, 文件在~/.steamship.json
{
"apiKey": "mykey"
}
- 創建 python 項目,使用 pip 安裝 streamship
pip install streamship
- 創建第一個可以被外部調用的 API, 文件為 api.py
from steamship import check_environment, RuntimeEnvironments, Steamship
from steamship.invocable import post, PackageService
class EntityGeneratePackage(PackageService):
PROMPT = "根據以下內容:{references},生成{language}基於{lib_name}實體類"
@post("generate")
def generate(self, language: str, lib_name: str, references: str):
gpt4 = self.client.use_plugin("gpt-4")
task = gpt4.generate(text=self.PROMPT.format(language=language,
lib_name=lib_name, references=references))
task.wait()
return task.output.blocks[0].text
- 部署
ship deploy
就這樣子第一個調用 openai gpt4 的 AI 程序就完成了,並且是接口可以訪問的.
- 如果想用這個外部接口 steamship 也提供了非常方便的調用方式
from steamship import Steamship
# Load the package instance stub.
pkg = Steamship.use(
"entity-generator",
api_key="YOUR_API_KEY"
)
# Invoke the method
resp = pkg.invoke(
"generate",
language=VALUE,
lib_name=VALUE,
references=VALUE
)
小結#
- 這個程序很簡單,不過 steamship 這個工具還不錯,接口和部署都非常方便
- steamship 這個寫本地函數,部署之後就暴露為 api 的方式不錯,客戶端調用方式也很簡單,值得學習
- steamship 上面還有不少其他內容,都是剛剛開始,值得看看
- AI 時代或許就是這樣無數個小接口就能連接起來實現不錯的功能了
- 雖然像這種代碼生成功能自己用代碼實現也可以,但是很顯然使用 AI 實現會快太多,所以那些鄙視 no-code/low-code 的開發人員可能要小心了,而那些不寫代碼的人,AI 會帶給他們很好的生產力提升,不需要了解太多,直接用自然語言就可能獲得一些代碼幫助自己自動化一些工作了
參考閱讀: