[全量] 初始化项目代码、配置、文档及Agent协同harness
This commit is contained in:
76
langchain-chat/server/agent/tools/calculate.py
Normal file
76
langchain-chat/server/agent/tools/calculate.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from langchain.prompts import PromptTemplate
|
||||
from langchain.chains import LLMMathChain
|
||||
from server.agent import model_container
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
_PROMPT_TEMPLATE = """
|
||||
将数学问题翻译成可以使用Python的numexpr库执行的表达式。使用运行此代码的输出来回答问题。
|
||||
问题: ${{包含数学问题的问题。}}
|
||||
```text
|
||||
${{解决问题的单行数学表达式}}
|
||||
```
|
||||
...numexpr.evaluate(query)...
|
||||
```output
|
||||
${{运行代码的输出}}
|
||||
```
|
||||
答案: ${{答案}}
|
||||
|
||||
这是两个例子:
|
||||
|
||||
问题: 37593 * 67是多少?
|
||||
```text
|
||||
37593 * 67
|
||||
```
|
||||
...numexpr.evaluate("37593 * 67")...
|
||||
```output
|
||||
2518731
|
||||
|
||||
答案: 2518731
|
||||
|
||||
问题: 37593的五次方根是多少?
|
||||
```text
|
||||
37593**(1/5)
|
||||
```
|
||||
...numexpr.evaluate("37593**(1/5)")...
|
||||
```output
|
||||
8.222831614237718
|
||||
|
||||
答案: 8.222831614237718
|
||||
|
||||
|
||||
问题: 2的平方是多少?
|
||||
```text
|
||||
2 ** 2
|
||||
```
|
||||
...numexpr.evaluate("2 ** 2")...
|
||||
```output
|
||||
4
|
||||
|
||||
答案: 4
|
||||
|
||||
|
||||
现在,这是我的问题:
|
||||
问题: {question}
|
||||
"""
|
||||
|
||||
PROMPT = PromptTemplate(
|
||||
input_variables=["question"],
|
||||
template=_PROMPT_TEMPLATE,
|
||||
)
|
||||
|
||||
|
||||
class CalculatorInput(BaseModel):
|
||||
query: str = Field()
|
||||
|
||||
def calculate(query: str):
|
||||
model = model_container.MODEL
|
||||
llm_math = LLMMathChain.from_llm(model, verbose=True, prompt=PROMPT)
|
||||
ans = llm_math.run(query)
|
||||
return ans
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = calculate("2的三次方")
|
||||
print("答案:",result)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user