mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-05 14:55:18 +02:00
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
@Time : 2023/5/11 14:45
|
|
@Author : alexanderwu
|
|
@File : llm.py
|
|
@Modified By: mashenquan, 2023-12-4. Upgrade openai to 1.x
|
|
"""
|
|
|
|
from metagpt.config import CONFIG
|
|
from metagpt.provider.anthropic_api import Claude2 as Claude
|
|
from metagpt.provider.human_provider import HumanProvider
|
|
from metagpt.provider.openai_api import OpenAIGPTAPI
|
|
from metagpt.provider.spark_api import SparkAPI
|
|
# openai v1.x removed the 'api_requestor', making interfaces built on it no longer functional.
|
|
# More: https://github.com/openai/openai-python/discussions/742
|
|
# from metagpt.provider.zhipuai_api import ZhiPuAIGPTAPI
|
|
|
|
_ = HumanProvider() # Avoid pre-commit error
|
|
|
|
|
|
def LLM() -> "BaseGPTAPI":
|
|
"""initialize different LLM instance according to the key field existence"""
|
|
# TODO a little trick, can use registry to initialize LLM instance further
|
|
if CONFIG.openai_api_key:
|
|
llm = OpenAIGPTAPI()
|
|
elif CONFIG.claude_api_key:
|
|
llm = Claude()
|
|
elif CONFIG.spark_api_key:
|
|
llm = SparkAPI()
|
|
# elif CONFIG.zhipuai_api_key: # openai v1.x removed the 'api_requestor'
|
|
# llm = ZhiPuAIGPTAPI()
|
|
else:
|
|
raise RuntimeError("You should config a LLM configuration first")
|
|
|
|
return llm
|