在学习《动手学ai agents》第5章时,书中介绍开源semantic_kernel库用法示例中,给出的代码是基于gpt。但我在学习是使用本地使用lm studio部署的minicpm5-2b模型。因此,书中的示例sk_connecting.py需要作对应调整。修改后的代码如下:
import os import json import asyncio from openai import OpenAI,AsyncOpenAI import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings kernel = sk.Kernel() api_key = "sk-lm-am25JcFg:zSXiYznKSNHs9n5qhNGq" client = AsyncOpenAI( base_url="http://192.168.101.26:1234/v1", api_key=api_key ) org_id = '' service_id = "lm_studio_cpm" kernel.add_service( OpenAIChatCompletion( service_id=service_id, ai_model_id="minicpm5-2b", async_client=client, ), ) #print("Registered Services:", list(kernel.services.keys())) #import inspect #sig = inspect.signature(OpenAIChatCompletion.__init__) #print("Available parameters:", list(sig.parameters.keys())) settings = PromptExecutionSettings(service_id="lm_studio_qwen") result = await kernel.invoke_prompt(prompt="推荐一部关于时间旅行的电影", settings=settings) print(result) # Use asyncio.run to execute the async function asyncio.run(run_prompt())主要的调整为:
1,OpenAIChatCompletion接口不支持直接对模型的定义(代码中注释可以放开查看该接口的参数),因此只好走 async_client这个参数;
2,invoke_prompt函数调用时,指定settings参数,明确使用的模型。
补充说明:本地使用lm studio部署的模型,增加了api key,因此在使用中需要指定一下。这个具体看各自的配置了。