crab

crab

The 'crabs in a barrel' mentality only exists if we view ourselves as a crab. The truth is on the map.

使用steamship構建第一個AI應用程式

這個 AI 應用用來做什麼#

這個應用其實就是根據表結構生成不同類型的實體類。

先說實現的結果是什麼?

  • 輸入語言: python
  • 輸入 entity 框架名稱: pydantic
  • 輸入 references: 建表的 SQL 或者 JSON 文件

entity-generator

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 實現實際上非常簡單:

  1. https://www.steamship.com/ 註冊帳號,並且獲得 api-key
  2. 安裝 streamship
pip install steamship
  1. 設置 api-key, 文件在~/.steamship.json
{
  "apiKey": "mykey"
}
  1. 創建 python 項目,使用 pip 安裝 streamship
pip install streamship
  1. 創建第一個可以被外部調用的 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
  1. 部署
ship deploy

就這樣子第一個調用 openai gpt4 的 AI 程序就完成了,並且是接口可以訪問的.

  1. 如果想用這個外部接口 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  
)

小結#

  1. 這個程序很簡單,不過 steamship 這個工具還不錯,接口和部署都非常方便
  2. steamship 這個寫本地函數,部署之後就暴露為 api 的方式不錯,客戶端調用方式也很簡單,值得學習
  3. steamship 上面還有不少其他內容,都是剛剛開始,值得看看
  4. AI 時代或許就是這樣無數個小接口就能連接起來實現不錯的功能了
  5. 雖然像這種代碼生成功能自己用代碼實現也可以,但是很顯然使用 AI 實現會快太多,所以那些鄙視 no-code/low-code 的開發人員可能要小心了,而那些不寫代碼的人,AI 會帶給他們很好的生產力提升,不需要了解太多,直接用自然語言就可能獲得一些代碼幫助自己自動化一些工作了

參考閱讀:

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。