赞
踩
1、C# 版最成熟,已开始 1.0.1:https://github.com/microsoft/semantic-kernel
2、Python 是 beta 版:https://github.com/microsoft/semantic-kernel
3、Java 版 alpha 阶段:https://github.com/microsoft/semantic-kernel/tree/experimental-java
4、TypeScript 版……,已经放弃了:https://github.com/microsoft/semantic-kernel/tree/experimental-typescript
文档写得特别好,但追不上代码更新速度:
5、更多讲解:https://learn.microsoft.com/en-us/semantic-kernel/overview/
6、更偏实操:https://github.com/microsoft/semantic-kernel/blob/main/python/notebooks/00-getting-started.ipynb
7、API Reference (目前只有C#): https://learn.microsoft.com/en-us/dotnet/api/microsoft.semantickernel?view=semantic-kernel-dotnet
8、更多生态:https://github.com/geffzhang/awesome-semantickernel
这里可以了解最新进展:https://learn.microsoft.com/en-us/semantic-kernel/get-started/supported-languages
# .env
OPENAI_API_KEY=""
OPENAI_BASE_URL=""
AZURE_OPENAI_DEPLOYMENT_NAME=""
AZURE_OPENAI_ENDPOINT=""
AZURE_OPENAI_API_KEY=""
--OpenAI 和 Azure,配置好一个就行。
!pip install semantic-kernel==0.4.0.dev
import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion import os # 加载 .env 到环境变量 from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # 创建 semantic kernel kernel = sk.Kernel() # 配置 OpenAI 服务。OPENAI_BASE_URL 会被自动加载生效 api_key = os.getenv('OPENAI_API_KEY') model = OpenAIChatCompletion( "gpt-3.5-turbo", api_key ) # 把 LLM 服务加入 kernel # 可以加多个。第一个加入的会被默认使用,非默认的要被指定使用 kernel.add_text_completion_service("my-demo", model)
划重点: 用我们熟悉的操作系统来类比,可以更好地理解 SK。
1、启动操作系统:kernel = sk.Kernel()
2、安装驱动程序:kernel.add_xxx_service()
3、安装应用程序:func = kernel.create_semantic_function()
4、运行应用程序:func()
# 定义 semantic function (实验室版本)
# 参数由{
{ }}标识
tell_joke_about = kernel.create_semantic_function("给我讲个关于{
{$input}}的笑话吧")
# 运行 function 看结果
result = await kernel.run_async(
tell_joke_about,
input_str="Hello world"
)
print(result)
import asyncio
async def run_function(*args):
return await kernel.invoke(*args)
result = asyncio.run(
run_function(tell_joke_about, input_str="Hello world")
)
1、skprompt.txt: 存放 prompt,可以包含参数,还可以调用其它函数
2、config.json: 存放配置,包括函数功能,参数的数据类型,以及调用大模型时的参数
已知数据库结构为: CREATE TABLE Courses ( id INT AUTO_INCREMENT PRIMARY KEY, course_date DATE NOT NULL, start_time TIME NOT NULL, end_time TIME NOT NULL, course_name VARCHAR(255) NOT NULL, instructor VARCHAR(255) NOT NULL ); 请将下述用户输入转为SQL表达式 用户输入:{ { $input}} 直接输出SQL语句,不要评论,不要分析,不要Markdown标识!
{ "schema": 1, "type": "completion", "description": "将用户的输入转换成 SQL 语句", #功能描述 "completion": { "max_tokens": 256, "temperature": 0, "top_p": 0, "presence_penalty": 0, "frequency_penalty": 0 }, "input": { "parameters": [ { "name": "input", "description": "用户的输入", "defaultValue": "" } ] } }
from semantic_kernel.skill_definition import sk_function
class DBConnector:
def __init__(self, db_cursor):
self.db_cursor = db_cursor
@sk_function(
description="查询数据库", # function 描述
name="query_database", # function 名字
)
def exec(self, sql_exp: str) -> str:
self.db_cursor.execute(sql_exp)
records = cursor.fetchall()
return str(records)
# 加载 semantic function。注意目录结构
my_plugins = kernel.import_semantic_skill_from_directory(
"./demo", "MyPlugins")
# 运行
result
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。