更新时间:2024-10-16 GMT+08:00
LLMs(语言模型)
LLMs模块用于对大语言模型API的适配封装,提供统一的接口快速地调用盘古、GALLERY三方模型等模型API。
- 初始化:根据相应模型定义LLM类,如使用盘古LLM为: LLMs.of("pangu")。
from pangukitsappdev.api.llms.factory import LLMs # 初始化盘古LLM llm_api = LLMs.of("pangu")
- 基础问答:基础的模型文本问答(temperature等参数采用模型默认的设置)。
llm_api.ask("你是谁?").answer
- 自定义参数问答:自定义设置如temperature等参数,获得对应的效果。
from pangukitsappdev.api.llms.llm_config import LLMConfig, LLMParamConfig from pangukitsappdev.api.llms.factory import LLMs # 设置模型参数,temperature为0.9 llm_config = LLMConfig(llm_param_config=LLMParamConfig(temperature=0.9)) # 初始化带参数的盘古LLM pangu_api = LLMs.of("pangu", llm_config) pangu_api.ask("写一篇五言律诗").answer
支持调整的参数解释:max_tokens: Optional[int] # 完成时要生成的令牌的最大数量 temperature: Optional[float] # 调整随机抽样的程度,温度值越高,随机性越大; 范围见模型API规范 top_p: Optional[float] # 核采样值, 和temperature不同时配置 presence_penalty: Optional[float] # 存在惩罚,增加模型谈论新主题的可能性,范围见具体模型API规范 frequency_penalty: Optional[float] # 频率惩罚,降低模型重复的可能性,提高文本的多样性、创新性(从参数盘古大模型暂不支持) stream: Optional[bool] # 是否开启流式调用
- 流式问答(只适用于ask接口):模型问答,开启流式效果,响应消息流式打印。
import sys from pangukitsappdev.api.llms.factory import LLMs from pangukitsappdev.api.llms.llm_config import LLMConfig, LLMParamConfig # 设置模型参数,stream为true llm_config = LLMConfig(llm_param_config=LLMParamConfig(stream=True)) # 盘古LLM pangu_llm = LLMs.of("pangu", llm_config) tokens = pangu_llm.ask("写一篇200字的散文") actual_tokens = [] for token in tokens: sys.stdout.write(token) sys.stdout.flush() actual_tokens.append(token)
- 流式问答:支持skill和agent流式输出。
import sys from pangukitsappdev.api.llms.factory import LLMs from pangukitsappdev.api.llms.llm_config import LLMConfig, LLMParamConfig from pangukitsappdev.callback.StreamCallbackHandler import StreamCallbackHandler from typing import Dict, Any, List from langchain_core.messages import BaseMessage from langchain_core.outputs import LLMResult # 继承StreamCallbackHandler方法,实现流式输出 class TextStreamCallBack(StreamCallbackHandler): def __init__(self): super().__init__() def on_chat_model_start( self, serialized: Dict[str, Any], messages: List[List[BaseMessage]], **kwargs: Any, ) -> Any: pass def on_llm_new_token( self, token: str, **kwargs: Any, ) -> Any: sys.stdout.write(token) sys.stdout.flush() def on_llm_end( self, response: LLMResult, **kwargs: Any, ) -> Any: pass # 设置模型参数,stream为true llm_config = LLMConfig(llm_param_config=LLMParamConfig(stream=True)) # 盘古LLM pangu_llm = LLMs.of("pangu", llm_config) pangu_llm.set_callback(TextStreamCallBack()) tokens = pangu_llm.ask("写一篇200字的散文") for token in tokens: pass
- 多轮对话问答:传递历史问答记录,实现多轮对话问答能力,同时支持自定义参数问答、流式问答。
from pangukitsappdev.api.llms.base import ConversationMessage, Role from pangukitsappdev.api.llms.factory import LLMs messages = [ConversationMessage(role=Role.SYSTEM, content="你是一个乐于助人的助手"), ConversationMessage(role=Role.USER, content="北京有什么好玩的地方"), ConversationMessage(role=Role.ASSISTANT, content="长城"), ConversationMessage(role=Role.USER, content="具体介绍一下")] pangu_llm = LLMs.of("pangu", llm_config) pangu_llm.ask(messages).answer
- 带人设的问答:支持在LLM配置项中设置人设,在LLM问答时系统会自动加上该人设,同时支持以上问答功能(暂不支持GALLERY三方模型)。
import sys from pangukitsappdev.api.llms.factory import LLMs from pangukitsappdev.api.llms.llm_config import LLMConfig, LLMParamConfig llm_config = LLMConfig() llm_config.llm_module_config.system_prompt = "你是华为开发的AI助手" # 盘古LLM pangu_llm = LLMs.of("pangu", llm_config) answer = pangu_llm.ask("你是谁")
父主题: Python SDK