Skip to content

Commit

Permalink
fix: support chinese in prompt generation (#1317)
Browse files Browse the repository at this point in the history
* Update dataframe_serializer.py

fix #1168 Support Chinese characters in prompt generation stage

* fix: Support Chinese characters in prompt generation stage (#1168)
Update dataframe_serializer.py
add test case to #1168
  • Loading branch information
cFireworks authored Oct 16, 2024
1 parent f7aa3fc commit df06bec
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion pandasai/helpers/dataframe_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ def convert_df_to_json_str(self, df: pd.DataFrame, extras: dict) -> str:

def convert_df_to_yml(self, df: pd.DataFrame, extras: dict) -> str:
json_df = self.convert_df_to_json(df, extras)
yml_str = yaml.dump(json_df, sort_keys=False)
yml_str = yaml.dump(json_df, sort_keys=False, allow_unicode=True)
if "is_direct_sql" in extras and extras["is_direct_sql"]:
return f"<table>\n{yml_str}\n</table>\n"
return yml_str
30 changes: 30 additions & 0 deletions tests/unit_tests/helpers/test_dataframe_serializer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import unittest

import pandas as pd

from pandasai.connectors import PandasConnector
from pandasai.helpers.dataframe_serializer import (
DataframeSerializer,
DataframeSerializerType,
)


class TestDataframeSerializer(unittest.TestCase):
def setUp(self):
self.serializer = DataframeSerializer()

def test_convert_df_to_yml(self):
# Test convert df to yml
data = {"name": ["en_name", "中文_名称"]}
connector = PandasConnector(
{"original_df": pd.DataFrame(data)},
name="en_table_name",
description="中文_描述",
field_descriptions={k: k for k in data},
)
result = self.serializer.serialize(
connector,
type_=DataframeSerializerType.YML,
extras={"index": 0, "type": "pd.Dataframe"},
)
self.assertIn("中文_描述", result)

0 comments on commit df06bec

Please sign in to comment.