Midscene如何配置模型参数
时间: 2025-04-29 13:52:32 浏览: 27
### Midscene 配置模型参数的方法
Midscene 是一款支持多种大模型集成的工具,默认情况下它集成了 OpenAI 的 SDK 来调用其 API 提供的服务。然而,由于某些地区无法访问 OpenAI 的服务[^1],因此需要替换为其他兼容的大模型服务提供商。
#### 一、配置插件环境
为了使 Midscene 正常工作,需先完成基础环境搭建并指定目标大模型的 API 接口地址以及密钥。以下是具体操作:
1. **安装依赖库**
安装必要的 Python 库来支持与第三方大模型交互的功能。
```bash
pip install openai requests langchain
```
2. **设置环境变量**
将所选服务商提供的 API 密钥存储到系统的环境变量中以便程序读取。
```python
import os
os.environ["MODEL_API_KEY"] = "your_api_key_here"
os.environ["MODEL_BASE_URL"] = "https://api.example.com/v1/models/"
```
3. **修改默认模型**
如果希望切换至阿里云 Qwen 模型,则按照官方文档指引调整相关代码逻辑。通常涉及更改请求 URL 和传递给服务器的数据结构等内容。
#### 二、自定义模型参数
当决定采用特定厂商的大规模预训练语言模型之后,可以根据实际需求进一步优化性能表现。下面列举几个常见的可调节选项及其作用说明:
- `temperature` 温度值控制生成文本多样性程度;较低数值倾向于更稳定但保守的回答,而较高则鼓励探索新颖想法[^2];
- `max_tokens` 设定最大返回 token 数量上限,防止输出过长影响用户体验或超出配额限制;
- `top_p` 核采样比例用于筛选最有可能的结果集合再从中随机选取最终答案,平衡质量与速度之间的关系;
- `frequency_penalty` 对重复词语施加惩罚力度从而减少冗余表达现象发生概率;
- `presence_penalty` 增强未见过概念出现机会促进创新思维发展。
这些超参的具体含义及推荐范围可以在对应平台的技术博客或者帮助中心找到详细介绍资料。
```python
from langchain.llms import BaseLLM
import json
class CustomModel(BaseLLM):
def __init__(self, api_key=None, base_url=""):
super().__init__()
self.api_key = api_key or os.getenv('MODEL_API_KEY')
self.base_url = base_url or os.getenv('MODEL_BASE_URL')
@property
def _llm_type(self) -> str:
return "custom"
def call_model(self, prompt: str, stop=None, temperature=0.7, max_tokens=512, top_p=1, frequency_penalty=0, presence_penalty=0):
headers = {"Authorization": f"Bearer {self.api_key}", 'Content-Type': 'application/json'}
payload = {
"prompt": prompt,
"model": "qwen-vl-max-latest",
"parameters": {
"temperature": temperature,
"max_new_tokens": max_tokens,
"top_p": top_p,
"repetition_penalty": (1 + frequency_penalty),
"penalty_alpha": presence_penalty
}
}
response = requests.post(f"{self.base_url}generate", data=json.dumps(payload), headers=headers).json()
if not isinstance(response.get("generated_text"), str):
raise ValueError("Invalid model output")
text = response['generated_text']
if stop is not None and any(s in text for s in stop):
idx = min([text.find(s) for s in stop])
text = text[:idx]
return text.strip()
# Example Usage
if __name__ == "__main__":
llm_instance = CustomModel(base_url="https://example-model-service/")
result = llm_instance.call_model(prompt="Write a short story about...", temperature=0.8, max_tokens=256)
print(result)
```
上述脚本展示了如何创建一个继承 LangChain 中 LLM 抽象类的新对象,并通过重写方法实现个性化功能扩展^。
阅读全文
相关推荐











